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