六一礼物怎么选?来用python采集几套试卷送给小朋友们吧

马上要六一了,想一想我小时候的儿童节老师大概率都会布置一些试卷,所以也算是渡过了一个很"快乐"的童年呢。

所以今天这篇文章来采集一下试卷网中的试卷,快来学习一下,然后采集几套试卷送给你身边还在上学的小朋友们吧,想必收到这个儿童节礼物他们应该会很高兴~

目标网站的页面大概是长这样的,结构还是很清晰的,不同科目,年级都很规律,可以说是比较容易采集的了。

image.png

我们以一年级的语文试卷为例来演示,首先点击"语文试卷",选择"一年级"。会新打开一个标签页,可以看到试卷还是很丰富的,为了小朋友的身心健康,我们就先采集前 5 页的试卷吧。

image.png

打开开发者工具,查看页面的 dom 结构

image.png

核心就是这个表格 tbody 里的内容了,关键信息基本都有了,试卷名称,文件类型,版本,大小,上传日期。那么问题来了,怎么下载呢? 我们继续点击某一个试卷,查看这个试卷的详情页面,可以看到页面底下有一个"本地下载按钮"。

image.png

利用开发者工具找到这个按钮的 dom 元素,如下,就能获取到这个试卷的下载地址了。点击测试一下,确实是能下载的。

image.png

这次就不用 js 来写脚本了,换 python 写吧,主打一个随心所欲。 大概原理,利用 request 库来请求内容,bs4 库来解析 html 提取试卷信息,下载链接等,开干~ 编写获取指定页面的所有试卷数据函数

image.png

测试执行执行一下,没什么问题

image.png

然后遍历获取到的试卷,得到下载地址

image.png

执行一下,成功拿到了试卷的下载地址。

image.png

编写下载试卷的函数,传入 url 和 folder,folder 暂时写死为 yuwen

image.png

执行后,就可以在当前目录下的 yuwen 文件夹中看到下载好的试卷文件了

image.png

试卷文件是压缩包,如果要手动解压的话,肯定是不行的。所以我们可以使用 rarfile 这个库来对文件进行解压。添加解压代码,解压后记得要删除原有的压缩包,代码如下

image.png

再来执行一次,完成后就能看到解压后的试卷了

image.png

最后,增加一个遍历条件,采集前 5 页的试卷

image.png

好了,到这里我们基本的功能就都实现好了。 如果你想指定下载的科目和年级,也可以支持,我们继续对代码进行一下改造,支持在执行的时候传入两个参数,分别是科目和年级。

比如下面的这个命令,就表示采集语文科目,1年级的试卷。如果要采集其他科目,也可以传入对应的参数即可

image.png

关键代码大致如下,解析脚本传入的参数

image.png

获取试卷列表页面的 list 地址

image.png

然后我们来尝试下载一年级的数学试卷

image.png

执行后的结果如下

image.png

作者:cooljser
链接:https://juejin.cn/post/7374968339905724426

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值