python 自动爬取题目到word中

2021-11-12 10:21:17 浏览数 (1)

朋友在微信小程序找到python的题目,想要搞下来,开始是自己照着敲,后面截图利用QQ提取文字功能,都比较机械和麻烦。

写了个程序帮他解决了这个问题。

首先抓包获取到题目的数据,原本是找地址的,不过直接放到外面请求有问题。

然后将数据放到json文件中。

同时复制到网页中,便于查看文件内容的层级结构。

最后按照层级关系,通过循环,判断直接打印出到终端并保存到word中。

安装库:

下载图片用:

代码语言:javascript复制
pip install requests

写入word文档:

代码语言:javascript复制
pip install python-docx

完整代码:

代码语言:javascript复制
import json
import requests
from docx import Document
from docx.shared import Inches

def download_img(url,index):
    try:
        response = requests.get(url)
        content = response.content
        with open(f'{index}.jpg','wb') as f:
            f.write(content)
    except:
        return None
    return True


def save_word(questions,title):
    count = 0
    for question in questions[:25]:
        count  = 1
        print(count,question['title'])
        document.add_paragraph(f"{count}.{question['title']}")
        if question['questionsImgFlag']:
            for questionimg in question['questionsimg']:
                print(questionimg['imgurl'])
                if download_img(questionimg['imgurl'],count):
                    document.add_picture(f'{count}.jpg', width=Inches(2.25))
        optionList = question['optionList']
        for option in optionList:
            if option['optionImgFlag']:
                print(option['id'],option['optionImg'])
                if download_img(option['optionImg'],count):
                    document.add_paragraph(f"{option['id']}.")
                document.add_picture(f'{count}.jpg', width=Inches(2.25))
            else:
                print(option['id'],option['content'])
                document.add_paragraph(f"{option['id']}.{option['content']}")
        print('正确答案:',question['answer'])
        document.add_paragraph(f"正确答案:{question['answer']}")
        print('解析:',question['explain'])
        document.add_paragraph(f"解析:{question['explain']}")
    document.save(title)

if __name__ == "__main__":
    with open('content.json','r',encoding='utf-8') as f:
        questions = json.load(f)['questionList']
    document = Document()
    document.add_heading('等级考试一级', 0)   
    save_word(questions,'等级考试一级.docx')

搞完之后朋友说真香,分分钟搞了几套题。


正常网上你看见的内容都是可以获取到的,不过有一些会切片,分成一段一段,有些甚至加密了,需要稍微调整一下。

爬虫自动化用来辅助自己学习工作还是很不错的,节省时间,不过爬取内容也得注意,不要乱爬,不然会出问题的

欢迎转载,转载请注明出处!

0 人点赞