朋友在微信小程序找到python的题目,想要搞下来,开始是自己照着敲,后面截图利用QQ提取文字功能,都比较机械和麻烦。
写了个程序帮他解决了这个问题。
首先抓包获取到题目的数据,原本是找地址的,不过直接放到外面请求有问题。
然后将数据放到json文件中。
同时复制到网页中,便于查看文件内容的层级结构。
最后按照层级关系,通过循环,判断直接打印出到终端并保存到word中。
安装库:
下载图片用:
pip install requests
写入word文档:
pip install python-docx
完整代码:
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')
搞完之后朋友说真香,分分钟搞了几套题。
正常网上你看见的内容都是可以获取到的,不过有一些会切片,分成一段一段,有些甚至加密了,需要稍微调整一下。
爬虫自动化用来辅助自己学习工作还是很不错的,节省时间,不过爬取内容也得注意,不要乱爬,不然会出问题的
欢迎转载,转载请注明出处!