怎么能加快爬虫抓取速度 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
swYang
V2EX    编程

怎么能加快爬虫抓取速度

  •  
  •   swYang 2016-11-20 10:14:24 +08:00 5352 次点击
    这是一个创建于 3254 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    17 条回复    2016-11-22 08:18:55 +08:00
    zwl2012
        1
    zwl2012  
       2016-11-20 10:27:27 +08:00 via iPhone
    上代理池 并行抓取
    wangdashuai
        2
    wangdashuai  
       2016-11-20 10:44:52 +08:00
    要不开多线程,要不上 python 的异步库.爬虫主要瓶颈在 io.
    ifishman
        3
    ifishman  
       2016-11-20 11:04:16 +08:00 via Android
    楼上的没看内容么?楼主说的前提是不给目标服务器施加太大压力的情况下,如何加快抓取速度
    andyfan
        4
    andyfan  
       2016-11-20 11:09:55 +08:00 via Android
    不给服务器造成压力可以夜间爬,避开服务器访问高峰,一分钟爬 3 个页面太慢了
    yidinghe
        5
    yidinghe  
       2016-11-20 11:13:29 +08:00 via Android
    文本内容爬起来为什么这么慢?
    MrJing1992
        6
    MrJing1992  
       2016-11-20 11:22:10 +08:00
    @yidinghe 因为楼主为了不给别人服务器造成压力,同时也是避免被屏蔽,所有一分钟就爬 3 个页面。
    如果不想给别人造成压力,只能避开高峰期了。你可以试试看,当你频率到什么程度时,会被封掉,大概就探到对方的承受力了,也许你现在太低估别人服务器了。
    swYang
        7
    swYang  
    OP
       2016-11-20 11:42:17 +08:00
    @ifishman 其实还是主要怕抓太快,被封,话说对服务器请求过大,会不会被发现,目标站长有查看日志异常一说吗
    swYang
        8
    swYang  
    OP
       2016-11-20 11:43:29 +08:00
    @MrJing1992 看来是我太保守了,我调整一下,多大请求频率试试看.thanks
    herozhang
        9
    herozhang  
       2016-11-20 11:45:43 +08:00
    写一份邮件给对方网站,提出数据需求,愿意有偿购买这批数据,请他们帮忙从数据库给你导出一份数据。
    同时告诉他们,如果他们不这么做,那么你就会开代理池去抓,结果都是一样的。
    suliuyes
        10
    suliuyes  
       2016-11-20 11:46:57 +08:00
    每个服务器是有自己的反爬措施的。你可以自己找个 IP 来试探下(不要用自己的 IP )。最好上代理池,不过免费好用的不好找。其他同学可以推荐下。
    Powered
        11
    Powered  
       2016-11-20 13:18:32 +08:00 via iPhone
    爬虫的瓶颈在 IO ,在数据库的写入,也就是吞吐量…就算你单位时间下载的页面多,也会有速度限制
    swYang
        12
    swYang  
    OP
       2016-11-21 09:18:55 +08:00
    昨天试了试,加大了请求频次,真的可以哦,看来是我低估了目标网站的承受能力,反而是我自己的小电脑开 N 个进程有点吃力,干不了别的了,不过据我实测,一天抓 10 万页面是可以的。
    swYang
        13
    swYang  
    OP
       2016-11-21 09:20:56 +08:00
    突然想到另外一个提高抓取频次的方法是,可以抓另外的网站啊,每家都同时抓,也是一个提高的方法啊
    dcsite
        14
    dcsite  
       2016-11-21 09:59:03 +08:00
    分布式抓取,上限是目标服务器 QPS 极限。
    最好,提醒一下他们服务器压力过大要升级配置~
    asd103
        15
    asd103  
       2016-11-21 19:54:29 +08:00
    为了不给对方服务器造成压力,我决定以最快速度完成抓取,开启了多线程,上代理池,每秒钟抓 40 个页面。。爬了一天一夜,用了 35 个小时,终于爬完了。
    swYang
        16
    swYang  
    OP
       2016-11-22 08:18:14 +08:00 via iPhone
    @tumbzzc 每秒 40 ,我的天
    swYang
        17
    swYang  
    OP
       2016-11-22 08:18:55 +08:00 via iPhone
    @tumbzzc 爬了多少数据
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1041 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 18:36 PVG 02:36 LAX 11:36 JFK 14:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86