python读取文件夹下所有文件并进行内容提取

上网课以来,各种平台百花齐放。老师在上面发布习题,进行考试,其中微信公众号的微助教不能复制粘体老师发布的习题,针对这一情况,结合所学的知识,通过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)

以上就是全部过程,对于学习通登平台可以直接用爬虫进行爬取,但是微助教是立足于公众号,只有通过这种稍微麻烦点的技术进行爬取。

技术不是很高,但是能解决问题,不足之处甚多,还望大神多多指教!

猜你喜欢

转载自blog.csdn.net/w5025/article/details/106954474