如何让爬虫一天抓取 100 万张网页 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bighead22
V2EX    Python

如何让爬虫一天抓取 100 万张网页

  •  
  •   bighead22 2019-05-13 17:20:44 +08:00 5199 次点击
    这是一个创建于 2345 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大规模数据抓取好文分享一篇,文章对设计一个单机定向日抓取百万网页的爬虫,进行了较为细致的阐述。 对日抓取百万量级,合计一亿张网页的爬虫, 在内存策略,硬盘存储策略,海量数据去重,网络性能优化方面给予了实操性很强的方案。 https://www.yuanrenxue.com/crawler/high-performance-crawler.html

    19 条回复    2019-05-16 16:04:03 +08:00
    deepall
        1
    deepall  
       2019-05-13 17:33:35 +08:00
    大佬大佬
    est
        2
    est  
       2019-05-13 17:36:21 +08:00
    > 不过奇怪,bloom 里没有公有方法来判断 URL 是否重复,我用的__contains__()方法,也可能是我没用对,不过判重效果是一样的。


    大佬大佬。
    Northxw
        3
    Northxw  
       2019-05-13 17:38:15 +08:00
    给大佬递咖啡
    bighead22
        4
    bighead22  
    OP
       2019-05-13 17:43:00 +08:00
    @Northxw 瑞幸 哈哈
    cz208209
        5
    cz208209  
       2019-05-13 17:49:52 +08:00
    给大佬捏腿
    shyrock
        6
    shyrock  
       2019-05-13 19:27:47 +08:00
    围观大佬,学习 ing
    CloudMx
        7
    CloudMx  
       2019-05-13 21:18:21 +08:00
    Ping 没必要发送四次,可以自主设置。
    Win: -n NUMBER
    Linux: -c NUMBER
    strugglexiang
        8
    strugglexiang  
       2019-05-14 09:24:19 +08:00
    递咖啡
    zarte
        9
    zarte  
       2019-05-14 10:09:34 +08:00
    说两点用 go 来替代,你那去除不需要的页面头部功能效率提高 n 倍,除非能不用 chrome 的驱动自己实现一套才有可能比别人开发的效率高。
    bighead22
        10
    bighead22  
    OP
       2019-05-14 11:32:05 +08:00
    @CloudMx 是的,这个方法可以
    liuxu
        11
    liuxu  
       2019-05-14 11:38:11 +08:00
    直接提取内容比直接拿 body 更好吧,body 里面有很多不需的 html 标签
    foolisheddy
        12
    foolisheddy  
       2019-05-14 12:50:42 +08:00 via iPhone
    分析详尽,学习了!
    bighead22
        13
    bighead22  
    OP
       2019-05-14 14:09:19 +08:00
    @liuxu 嗯,也可以这样。根据项目的选择来。 有的需要原始数据。另外直接提取有可能某些 html tag 确实 或者匹配规则没考虑周全,可能会大面积出现提取错误
    caneman
        14
    caneman  
       2019-05-14 14:47:03 +08:00
    如果单 IP 你爬不了 100+就被 ban 了,效率直线下降。
    AmberJiang
        15
    AmberJiang  
       2019-05-15 10:40:20 +08:00
    谢谢大佬分享 学习了 最近也正卡在这里
    bighead22
        16
    bighead22  
    OP
       2019-05-15 10:49:56 +08:00
    @caneman 反爬不错的网站,单 ip 爬不到这么多次。 降低单 IP 的单位时间抓取次数,有可能爬这么多。 但是这样单 IP 的抓取效率就太低了
    caneman
        17
    caneman  
       2019-05-15 17:39:15 +08:00
    @bighead22 靠 ADSL 拨号来切 IP,可能有一部分站在完美的理想状况下确实按你的方法能达到日抓百万。

    但是大多数能够产生有利用价值数据的网站,这种方法都不太能实现单机日抓百万,

    IP 切换开销 6S 一次,太久了。。
    dtjydsre
        18
    dtjydsre  
       2019-05-16 00:02:35 +08:00
    学习了

    最近就在爬一个网站,大概有 1 亿个网页
    感觉主要限制还是在于网站的反爬,而且它的反爬是一封就封 2-3 个月的那种
    考虑稳定可靠,买了动态 IP 地址池,一个月 1000 块的样子
    代理限制了最大 40 的 QPS,一天能爬差不多 300 多 W 的页面下来
    foxyier
        19
    foxyier  
       2019-05-16 16:04:03 +08:00
    get,tks
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1149 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:17 PVG 07:17 LAX 16:17 JFK 19:17
    Do have faith in what you're doing.
    ubao 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