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
lk2589
V2EX  ›  Python

想问问各位爬虫的策略

  •  1
     
  •   lk2589 · 2018-07-02 10:19:52 +08:00 · 3412 次点击
    这是一个创建于 2320 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前在做一个爬虫,老板的要求是要我抓取网页和解析分开,也就是把网页的正文全部保存下来,解析可以延后。
    想问问你们的策略是抓取和解析放在一起了还是分开了?
    以后的爬虫数据更新是如何更新?全部更新?
    21 条回复    2018-07-03 13:41:42 +08:00
    lk2589
        1
    lk2589  
    OP
       2018-07-02 10:47:10 +08:00
    呃呃,没有老哥解解惑吗。。
    evlos
        2
    evlos  
       2018-07-02 10:54:34 +08:00 via iPhone
    分开,近期的内容定时更新
    sikariba
        3
    sikariba  
       2018-07-02 11:35:51 +08:00
    分开,出问题的时候调试起来方便得多
    jatesun
        4
    jatesun  
       2018-07-02 11:44:03 +08:00
    肯定是分开啊,没用框架吗?比如 python 的 scrapy,java 的 webmagic ?
    jatesun
        5
    jatesun  
       2018-07-02 11:44:44 +08:00
    另外更新的话区分更新和新增吧,维护一个 redis 就行了
    feikon
        6
    feikon  
       2018-07-02 11:54:29 +08:00
    更新的话如果数据量小可以考虑 set,然后数据量大就用数据库
    lk2589
        7
    lk2589  
    OP
       2018-07-02 13:40:23 +08:00
    没用框架。
    我还想问下解析
    多网站的爬虫如何制作的?对爬取的网站设置一个标签,使用不同的解析方法吗?
    wingyiu
        8
    wingyiu  
       2018-07-02 13:49:58 +08:00
    分开是个不错的办法。

    SEDA 了解一下。
    fiht
        9
    fiht  
       2018-07-02 13:58:24 +08:00   ❤️ 1
    分开。
    不仅是调试的问题。
    保存原始的 HTML 信息以后再做数据分析会方便很多。
    数据量大的话推荐一下 http://www.infoq.com/cn/presentations/tera-in-the-ten-thousand-level-real-time-search-framework?utm_source=InfoQ&utm_medium=zones 百度的这个讲座。里面有很多干货了。
    楼上讲的 scrapy 和 webmagic 在某些意义上还是抓取和解析是没有分开的,默认 /大多数用户都是在 memory 里面倒腾,一个抓取和解析分开的例子应该是 nutch。
    目前我们面向大约 1kw URL,准备模仿百度的这一套架构搞一搞。
    woscaizi
        10
    woscaizi  
       2018-07-02 14:09:07 +08:00
    @fiht #9 1kw URL 效率怎么样?多久遍历一次?
    binux
        11
    binux  
       2018-07-02 14:15:30 +08:00 via Android
    我不知道你分开是什么意思,就算百度抓取和解析是分开的,但也是实时的啊。为什么要延后?
    fiht
        12
    fiht  
       2018-07-02 14:16:56 +08:00
    @woscaizi 抓取+入 hbase,三天更新一次。目前抓取速度不是问题,都是可以通过加机器解决的。现在我们在想的是怎么基于这 1kw HTML 做一些安全上的研究。
    RicardoScofileld
        13
    RicardoScofileld  
       2018-07-02 14:18:43 +08:00
    所谓的分开是指先把页面爬取出来,之后再从页面中提取数据吗?
    lk2589
        14
    lk2589  
    OP
       2018-07-02 14:22:36 +08:00
    @RicardoScofileld 是这样的,解析出错就不用重新抓数据了
    dbow
        15
    dbow  
       2018-07-02 14:24:14 +08:00
    抓取网页之后, 丢到解析 worker 的队列去, 可以做成实时的。
    woscaizi
        16
    woscaizi  
       2018-07-02 15:06:27 +08:00 via iPhone
    @fiht 期待后续的分享
    tabris17
        17
    tabris17  
       2018-07-02 15:07:46 +08:00
    当然是职责分离呀
    crawl3r
        18
    crawl3r  
       2018-07-02 16:18:53 +08:00   ❤️ 1
    如果只是简单的页面,比如就是抓取独立的 Url,而且抓的数据量非常大,或者解析工作非常大(比如搜索引擎),抓取与解析分开会好点;
    如果抓取逻辑比较复杂,比如要抓取 c 页面,要经过 a->b->c,那最好写在一块,因为如果解析逻辑分开的话,你要写 3 个有强相关的解析代码,从部署与维护的角度看太复杂了。
    zdnyp
        19
    zdnyp  
       2018-07-02 17:57:17 +08:00
    我们是放一起的。只保存清洗过的内容。如果需要调试的话,就找原网页 url 调...
    anyfucker
        20
    anyfucker  
       2018-07-03 11:25:34 +08:00
    我觉得抓取和解析分开。
    最好是做成异步,把抓取的数据放在全局队列里,解析的进程另外单独处理,一方面有助于架构分离,另一方面分开的逻辑便于将来横向扩展。

    https://tweetyf.org/p/359

    我也写过一些,不过后来没有时间搞完,希望有时间可以和楼主多交流爬虫和搜索引擎的只是。
    teaser
        21
    teaser  
       2018-07-03 13:41:42 +08:00
    分开更好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4330 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:12 · PVG 18:12 · LAX 02:12 · JFK 05:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.