Writeup [2022/7/18] : 某信息发布网站数据爬取

一、背景

针对某信息发布网站,希望爬取已发布的信息。原网站提供过滤查询选项,且内容加载方式以 JS 拉取数据后填充显示进行。不提供直接的选页功能,仅可通过下一页,或前后三页幅度跳转,跳转也以 JS 更新数据形式进行。

二、方案一(未最终采用)

1、利用 Selenium 模拟网页访问,获取显示内容,并激发下一页跳转。持续爬取数据。

2、该方法遇到两个问题:1)网站设计上可能存在缺陷,在完全不添加查询过滤选项时,仅能正常显示一部分分页。不能访问的部分未见主动限制提示,猜测是代码实现中有 bug。2)采用 Selenium 整体加载较慢,爬取效率较低。

三、方案二

1、利用 Chrome 调试台查看网络流量,定位到所需过滤选项条件下 JS 拉取数据的接口,该接口返回含所需爬取内容的 JSON 格式数据,访问速度很快。

2、经测试,未发现该接口有访问限制。可进行持续大量访问。

3、编写 python 脚本,利用 requests 包按所需过滤条件调用该数据端口,保存获取的数据。

4、因数据量较大,采用多进程 + 多线程方法进行加速。

------------------

20220813更新:

目标网站调整部分方案二接口返回数据的方式,不直接返回 json 数据,而是返回嵌入 js 的 html 页面,在页面加载时可获得完整数据。因此更改拉取接口,改为使用 Selenium 模拟网页访问后再获取其中的 json 数据。经测试,发现原多线程拉取方法过度占用系统资源,故改为单线程爬取。对一年量数据的爬取整体耗时为多线程方案下3-4倍。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值