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

Python 爬虫时如何高效的链接去重

  •  1
     
  •   wisefree · 2017-03-16 08:54:42 +08:00 · 3171 次点击
    这是一个创建于 2786 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一步,爬取链接存储到 MongoDB 中 第二步,爬取每个链接的详细信息,存储爬取成功的链接及信息

    第二步爬取的过程不会很顺利,有时需要计算未完成的链接,再进行爬取,我目前是这样处理的 把第一步的链接存储在 list 里,再转成集合( set) 把第二步的链接存储在 list 里,再转成集合( set) 未完成的链接 = 第一步的 set - 第二步的 set

    遇到的问题是,如果链接数比较小的时候,这样处理速度比较快,当链接数达到几百万时,这样处理的速度不是很理想,请问有没有高效的处理方法呢?

    12 条回复    2017-03-16 11:13:38 +08:00
    regicide
        1
    regicide  
       2017-03-16 09:03:35 +08:00   ❤️ 1
    用 redis 去重比较粗暴
    Tucao
        2
    Tucao  
       2017-03-16 09:06:28 +08:00 via Android   ❤️ 5
    caixiexin
        3
    caixiexin  
       2017-03-16 09:07:45 +08:00 via Android   ❤️ 3
    布隆过滤器
    JasperYanky
        4
    JasperYanky  
       2017-03-16 09:11:17 +08:00   ❤️ 1
    最近在爬一个站,第一步的数据存数据库了, django 下面放一个 scrapy 存取去重很方便,第二步用第一步的数据,使用 celery 的 task 定时爬取 我的第二步是下图片 所以开了好几台小机器分开下载的,下载结果直接修改 主数据库;缺点是数据库访问有点频繁,负载有点高~ 感觉 django + scrapy + celery 做类似的项目简直是爽~
    chendajun
        5
    chendajun  
       2017-03-16 09:23:20 +08:00   ❤️ 1
    https://github.com/rolando/scrapy-redis
    目前用 redis 去重,抓了微信,微博,网站,视频总共加载一块得 1000+个,用的很丝滑。
    billgreen1
        6
    billgreen1  
       2017-03-16 10:02:46 +08:00   ❤️ 1
    @caixiexin 赞, 布隆过滤器是标准做法
    sunchen
        7
    sunchen  
       2017-03-16 10:22:52 +08:00   ❤️ 2
    @billgreen1 bloomfliter 有一定概率产生错误,要看下业务能不能允许这种情况
    wisefree
        8
    wisefree  
    OP
       2017-03-16 11:12:16 +08:00
    @regicide 谢啦,我去查查这方面的资料
    wisefree
        9
    wisefree  
    OP
       2017-03-16 11:12:30 +08:00
    @Tucao 十分感谢!
    wisefree
        10
    wisefree  
    OP
       2017-03-16 11:12:55 +08:00
    @caixiexin 谢啦!:)
    wisefree
        11
    wisefree  
    OP
       2017-03-16 11:13:21 +08:00
    @JasperYanky 感谢!
    wisefree
        12
    wisefree  
    OP
       2017-03-16 11:13:38 +08:00
    @chendajun 我去研究一下,谢谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1395 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:48 · PVG 07:48 · LAX 16:48 · JFK 19:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.