上网课以来,各种平台百花齐放。老师在上面发布习题,进行考试,其中微信公众号的微助教不能复制粘体老师发布的习题,针对这一情况,结合所学的知识,通过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)
以上就是全部过程,对于学习通登平台可以直接用爬虫进行爬取,但是微助教是立足于公众号,只有通过这种稍微麻烦点的技术进行爬取。
技术不是很高,但是能解决问题,不足之处甚多,还望大神多多指教!