前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 自动爬取题目到word中

python 自动爬取题目到word中

作者头像
叶子陪你玩
发布2021-11-12 10:21:17
6290
发布2021-11-12 10:21:17
举报
文章被收录于专栏:叶子陪你玩编程

朋友在微信小程序找到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')

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


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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档