web scraper 的核心逻辑,请高手指点 - 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
shyrock

web scraper 的核心逻辑,请高手指点

  •  
  •   shyrock 2014 年 8 月 11 日 6739 次点击
    这是一个创建于 4275 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我理解就是
    1.分析网页
    2.分析数据
    3.找到连接,跳转到1.

    除了第二步的分析数据根据不同应用有区别,
    框架部分很简单吧?

    完全不懂,说错了请轻拍。
    7 条回复    2015-02-27 11:52:24 +08:00
    iannil
        1
    iannil  
       2014 年 8 月 11 日   15
    基本是对的,但一个网页的链接有n多,也就是说你会遇到一个页面开始,然后1*n*n*n这种方式展开的链接个数,同时链接会有重复的,于是如何保存已抓取的链接和如何把满足某些条件的链接筛选出来会是你需要解决的一个新问题。

    好了,当你有一个链接处理机制来帮助你管理你抓取的所有链接后,你爬虫的抓取效率变得非常高效,高效到你的爬虫因此被目标网站屏蔽了,你该如何解决?改header头的东西我就不多说了,只说关键的屏蔽ip怎么解决?
    你需要将你的爬虫做成分布式,由中央服务器作为任务调度中心,处理抓取的页面,将要抓取的链接分发到各个辖属机器。
    辖属机器只做一件事,就是向中央服务器请求任务,并把请求来的任务执行后将结果返回给调度中心。每个辖属机器是一台几十块一年的虚拟机即可,我们要的是辖属机器的ip而已。

    好了,现在你由n多个ip分散在n个机器中替你做抓取,数据统一集中在你隐藏在幕后的中央服务器里,效率非常高,一般你控制的好,目标服务器不会发现某个ip请求过于频繁,流量过高,但是事情有可能就是那么变态!目标服务器还是发现了你!把你所有的小爬虫都干掉了!怎么办?

    你需要优化调度中心的东西,你的中央服务器不能只简单的把任务平均分给各个辖属机器,你需要实时的监控各个辖属机器的任务数量与执行状态,任务过高的辖属机器得让他歇歇,免得他被干掉,这事为啥不在辖属机器里做呢?因为我们用的是几十块一年的虚拟机啊!!成本啊!!你有钱买几千块一年的机器当我没说啊!!

    好了,现在你的任务调度中心很智能的保证每个辖属机器的任务不会过高,如果你嫌效率还是低,再开一个虚拟机就好了。ip也有很多,访问频率和流量你也控制的很好,链接管理也控制的很好,基本上爬虫的框架就有个雏形了。

    什么?你只问核心逻辑?那就这些了。
    shyrock
        2
    shyrock  
    OP
       2014 年 8 月 11 日
    @iannil 如此详细认真的回答,受益匪浅,拜谢了。
    还有个问题,有没有开源的爬虫框架推荐呢?
    Doubear
        4
    Doubear  
       2014 年 8 月 11 日
    @iannil 大神啊、、、、尼玛 V2不适合我这种菜鸟来混额、、、、、
    yakczh
        5
    yakczh  
       2014 年 8 月 29 日
    核心就是消重,抓取比较简单,一个队列就搞定了
    hjkl0001
        6
    hjkl0001  
       2015 年 2 月 27 日 via iPhone
    值得学习
    zvDC
        7
    zvDC  
       2015 年 2 月 27 日
    学习:抓取链接,分布式处理(具体如何?)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2891 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 14:21 PVG 22:21 LAX 07:21 JFK 10:21
    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