关键词:
爬虫,大数据,编程
描述:
目前准备爬取一家目标网站的公开数据,预测将累计发起 120 万次 api 请求,每个爬虫脚本都是单进程、单线程。把想要爬取的数据,按关键字段(如id)拆分多段(每段为 10000 条数据),分别安排给不同的爬虫同时爬取。这些爬虫,我称之为爬虫群。爬取到的数据我都存储在本地的mysql中。
我是如何实现爬虫群呢?用的是 jupyter lab,创建N个 .ipynb 文件,每个文件创建一个 cell,并把初始爬虫脚本拷贝进去,并修改关键参数(如起始id),然后启动该cell,即激活该爬虫。
如果计划 7 * 24 小时运行完成爬取工作,那么 1200000/(7*24*60*60) = 1.984 秒,为平均每次请求的间隔。每个爬虫脚本每次请求的响应和处理时间,约为20秒,那么至少同时开启10个爬虫脚本,才能按计划完成。
疑问:
这个请求量,对目标网站,是攻击,还是正常?
思路:
1、爬虫的伦理:不应对目标网站的业务产生干扰或影响,也不应爬取目标网站未公开数据。
2、爬虫的性能:要计算和掌握自己的爬虫群的性能,并根据目标网站的业务判断该性能是否超出目标网站的承受范围。爬虫群的性能,一方面是对目标网站产生的流量,一方面是本地流量与IO读写,内存、CPU等一般没啥问题。
3、爬虫的安全:一方面考虑来自目标网站的反爬,另一方面考虑伦理。
结论:
1、爬虫群本地性能无压力。
2、目标网站的业务量并不大,当前爬虫群的请求频次明显过高,应至少削减至少一半以上。
这篇文章的 PRESS.one 签名: press.one/file/v?s=50…