V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
swYang
V2EX  ›  编程

怎么能加快爬虫抓取速度

  •  
  •   swYang · Nov 20, 2016 · 5641 views
    This topic created in 3445 days ago, the information mentioned may be changed or developed.

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

    17 replies    2016-11-22 08:18:55 +08:00
    zwl2012
        1
    zwl2012  
       Nov 20, 2016 via iPhone
    上代理池 并行抓取
    wangdashuai
        2
    wangdashuai  
       Nov 20, 2016
    要不开多线程,要不上 python 的异步库.爬虫主要瓶颈在 io.
    ifishman
        3
    ifishman  
       Nov 20, 2016 via Android
    楼上的没看内容么?楼主说的前提是不给目标服务器施加太大压力的情况下,如何加快抓取速度
    andyfan
        4
    andyfan  
       Nov 20, 2016 via Android
    不给服务器造成压力可以夜间爬,避开服务器访问高峰,一分钟爬 3 个页面太慢了
    yidinghe
        5
    yidinghe  
       Nov 20, 2016 via Android
    文本内容爬起来为什么这么慢?
    MrJing1992
        6
    MrJing1992  
       Nov 20, 2016
    @yidinghe 因为楼主为了不给别人服务器造成压力,同时也是避免被屏蔽,所有一分钟就爬 3 个页面。
    如果不想给别人造成压力,只能避开高峰期了。你可以试试看,当你频率到什么程度时,会被封掉,大概就探到对方的承受力了,也许你现在太低估别人服务器了。
    swYang
        7
    swYang  
    OP
       Nov 20, 2016
    @ifishman 其实还是主要怕抓太快,被封,话说对服务器请求过大,会不会被发现,目标站长有查看日志异常一说吗
    swYang
        8
    swYang  
    OP
       Nov 20, 2016
    @MrJing1992 看来是我太保守了,我调整一下,多大请求频率试试看.thanks
    herozhang
        9
    herozhang  
       Nov 20, 2016
    写一份邮件给对方网站,提出数据需求,愿意有偿购买这批数据,请他们帮忙从数据库给你导出一份数据。
    同时告诉他们,如果他们不这么做,那么你就会开代理池去抓,结果都是一样的。
    suliuyes
        10
    suliuyes  
       Nov 20, 2016
    每个服务器是有自己的反爬措施的。你可以自己找个 IP 来试探下(不要用自己的 IP )。最好上代理池,不过免费好用的不好找。其他同学可以推荐下。
    Powered
        11
    Powered  
       Nov 20, 2016 via iPhone
    爬虫的瓶颈在 IO ,在数据库的写入,也就是吞吐量…就算你单位时间下载的页面多,也会有速度限制
    swYang
        12
    swYang  
    OP
       Nov 21, 2016
    昨天试了试,加大了请求频次,真的可以哦,看来是我低估了目标网站的承受能力,反而是我自己的小电脑开 N 个进程有点吃力,干不了别的了,不过据我实测,一天抓 10 万页面是可以的。
    swYang
        13
    swYang  
    OP
       Nov 21, 2016
    突然想到另外一个提高抓取频次的方法是,可以抓另外的网站啊,每家都同时抓,也是一个提高的方法啊
    dcsite
        14
    dcsite  
       Nov 21, 2016
    分布式抓取,上限是目标服务器 QPS 极限。
    最好,提醒一下他们服务器压力过大要升级配置~
    TKKONE
        15
    TKKONE  
    PRO
       Nov 21, 2016
    为了不给对方服务器造成压力,我决定以最快速度完成抓取,开启了多线程,上代理池,每秒钟抓 40 个页面。。爬了一天一夜,用了 35 个小时,终于爬完了。
    swYang
        16
    swYang  
    OP
       Nov 22, 2016 via iPhone
    @tumbzzc 每秒 40 ,我的天
    swYang
        17
    swYang  
    OP
       Nov 22, 2016 via iPhone
    @tumbzzc 爬了多少数据
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5806 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 07:31 · PVG 15:31 · LAX 00:31 · JFK 03:31
    ♥ Do have faith in what you're doing.