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

有个爬虫的疑问

  •  
  •   hippoboy · 2016-06-24 11:31:25 +08:00 · 2989 次点击
    这是一个创建于 2860 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我现在在写一个爬取全市餐厅的爬虫,精确到商圈
    入口是:全市餐厅的列表页
    我目前的做法是:
    1.获取每个区所有餐厅的 url(是一个列表页)
    2.通过区 url 列表页获取下属商圈的 url
    3.同时将市-区-商圈,单独一个 mysql 表建立了联动
    4.将商圈的 url 和 name 转 json 放入 redis 队列
    5.多线程 lpop 出来之后获取商圈所需要的信息

    现在遇到的问题是:

    再一次重新爬取,我没法区分商圈内哪些餐厅以前爬取过

    leader 的意思是修改我的逻辑
    不使用 redis,直接存 mysql,加个标志
    每次用 select top 取出来,然后操作完再 update 标志,记录爬过
    然后每次从 mysql 取,遇到爬过的就略过

    我现在有点犹豫:
    各位帮我解解?
    6 条回复    2016-06-29 14:23:29 +08:00
    xsseroot
        1
    xsseroot  
       2016-06-24 11:47:10 +08:00
    将商圈的 url 和 name 做个 hash ,写到 redis 中每次判断下不就行了。
    jatesun
        2
    jatesun  
       2016-06-24 14:27:58 +08:00 via iPhone
    可以放到线程安全的 hash 表里
    chendajun
        3
    chendajun  
       2016-06-24 14:31:15 +08:00
    把抓过的 URL md5 一下,写到 redis , mongo 等。每来一个 URL 就与库里比较一下
    hwsdien
        4
    hwsdien  
       2016-06-24 17:49:41 +08:00
    把采集过的 url 放进 redis, 每次采集判断一下。
    Yc1992
        5
    Yc1992  
       2016-06-24 18:22:05 +08:00
    @xsseroot 头像已暴露
    practicer
        6
    practicer  
       2016-06-29 14:23:29 +08:00
    尽管让重复的 item 插进数据库,活干完后 SELECT DUMPS 掉
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   6002 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 06:14 · PVG 14:14 · LAX 23:14 · JFK 02:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.