赞
踩
上网课以来,各种平台百花齐放。老师在上面发布习题,进行考试,其中微信公众号的微助教不能复制粘体老师发布的习题,针对这一情况,结合所学的知识,通过python进行数据的提取。
流程如下:
1.电脑登录微信进去答题页面,右键查看源码,保存记事本中。
2.对源码进行分析
3.结合xpath和正则进行数据提取
4.保存到另一个文件夹中
代码如下:
import re import os from lxml import etree i=0 #定义一个变量,用来记录第几题 with open("ti.txt", 'w') as file_object: #打开一个txt文件用来保存题目 for filename in os.listdir("E:/beijing"): #所有的文件放入E盘beijing目录下,并获取文件夹下的所有文件名 i+=1 f = open("E:/beijing//"+filename, "r", encoding='utf-8') # 打开文件夹下的每一个文件,以只读得方式,注意编码格式,含中文 data = f.readlines() # 循环文本中得每一行,得到得是一个列表的格式<class 'list'> f.close() data ="".join(data) #将列表转换为字符串 pat = re.compile(r'<p>(.*?)</p>') #正则处理得到题目 result = pat.findall(data) html = etree.HTML(data) div = html.xpath('//div[@class="_1yjrJA-TQbXl_8l5e6YGxh"]/text()') #xpath处理得到答案 div=" ".join(div) div1 = html.xpath('//div[@class="dhiccbzLAlvLFEBjU5Y5R"]/div[2]/text()') div1 = " ".join(div1) result=" ".join(result) pp = "{}、问题是: ".format(i)+result+"\n我填得答案是\n"+div +"\n正确答案\n"+div1 file_object.write("\n" + pp)
以上就是全部过程,对于学习通登平台可以直接用爬虫进行爬取,但是微助教是立足于公众号,只有通过这种稍微麻烦点的技术进行爬取。
技术不是很高,但是能解决问题,不足之处甚多,还望大神多多指教!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。