怎么能加快爬虫抓取速度

2016-11-20 10:14:24 +08:00
 swYang

最近迷上看小说,写了一个小说爬虫( PS:也不能算爬虫,只是能简单的执行抓小说列表、详情、入库的操作),想问一下,假定有 1 万部小说,每部 500 章节,为了不给目标服务器造成太大压力,如何能尽快抓完,目前我写的一分钟抓 3 个页面,那么 500*10000/3/60/24 约等于 1100 多天,哦, my god ,大伙儿有啥好建议

5019 次点击
所在节点    编程
17 条回复
zwl2012
2016-11-20 10:27:27 +08:00
上代理池 并行抓取
wangdashuai
2016-11-20 10:44:52 +08:00
要不开多线程,要不上 python 的异步库.爬虫主要瓶颈在 io.
ifishman
2016-11-20 11:04:16 +08:00
楼上的没看内容么?楼主说的前提是不给目标服务器施加太大压力的情况下,如何加快抓取速度
andyfan
2016-11-20 11:09:55 +08:00
不给服务器造成压力可以夜间爬,避开服务器访问高峰,一分钟爬 3 个页面太慢了
yidinghe
2016-11-20 11:13:29 +08:00
文本内容爬起来为什么这么慢?
MrJing1992
2016-11-20 11:22:10 +08:00
@yidinghe 因为楼主为了不给别人服务器造成压力,同时也是避免被屏蔽,所有一分钟就爬 3 个页面。
如果不想给别人造成压力,只能避开高峰期了。你可以试试看,当你频率到什么程度时,会被封掉,大概就探到对方的承受力了,也许你现在太低估别人服务器了。
swYang
2016-11-20 11:42:17 +08:00
@ifishman 其实还是主要怕抓太快,被封,话说对服务器请求过大,会不会被发现,目标站长有查看日志异常一说吗
swYang
2016-11-20 11:43:29 +08:00
@MrJing1992 看来是我太保守了,我调整一下,多大请求频率试试看.thanks
herozhang
2016-11-20 11:45:43 +08:00
写一份邮件给对方网站,提出数据需求,愿意有偿购买这批数据,请他们帮忙从数据库给你导出一份数据。
同时告诉他们,如果他们不这么做,那么你就会开代理池去抓,结果都是一样的。
suliuyes
2016-11-20 11:46:57 +08:00
每个服务器是有自己的反爬措施的。你可以自己找个 IP 来试探下(不要用自己的 IP )。最好上代理池,不过免费好用的不好找。其他同学可以推荐下。
Powered
2016-11-20 13:18:32 +08:00
爬虫的瓶颈在 IO ,在数据库的写入,也就是吞吐量…就算你单位时间下载的页面多,也会有速度限制
swYang
2016-11-21 09:18:55 +08:00
昨天试了试,加大了请求频次,真的可以哦,看来是我低估了目标网站的承受能力,反而是我自己的小电脑开 N 个进程有点吃力,干不了别的了,不过据我实测,一天抓 10 万页面是可以的。
swYang
2016-11-21 09:20:56 +08:00
突然想到另外一个提高抓取频次的方法是,可以抓另外的网站啊,每家都同时抓,也是一个提高的方法啊
dcsite
2016-11-21 09:59:03 +08:00
分布式抓取,上限是目标服务器 QPS 极限。
最好,提醒一下他们服务器压力过大要升级配置~
tumbzzc
2016-11-21 19:54:29 +08:00
为了不给对方服务器造成压力,我决定以最快速度完成抓取,开启了多线程,上代理池,每秒钟抓 40 个页面。。爬了一天一夜,用了 35 个小时,终于爬完了。
swYang
2016-11-22 08:18:14 +08:00
@tumbzzc 每秒 40 ,我的天
swYang
2016-11-22 08:18:55 +08:00
@tumbzzc 爬了多少数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/321818

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX