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

如何采集大众点评网的千万数据?它有严格的反爬虫措施

  •  
  •   pc10201 · 2014 年 1 月 3 日 · 47280 次点击
    这是一个创建于 4399 天前的主题,其中的信息可能已经有所发展或是发生改变。
    没事研究采集,准备拿大众点评网练手
    形式如下
    http://www.dianping.com/shop/6000000/
    http://www.dianping.com/shop/6000001/

    shop后面的ID是连续的,范围是1-1500万,当然有许多店铺是不存在的(404错误),实际的店铺数量在700万左右,这里是用的穷举法,当然也可以进入网页按深度索引

    遇到一个很严重的问题,就是点评网被爱帮网采集后采取了严格的反爬虫措施。
    严格到什么程序,如果一个IP一秒一个进行采集,大概采集500-1000个左右就会出现403错误,IP被冻结了,一段时间后才解封,如果冻结了你不死心,继续大量采,就永久冻结了。

    有人可能会说,用代理啊,我测试了淘宝许多家的好多代理,库存号称3000-5000个代理IP,一秒钟内能连接上也就200-800个,还有部分是透明代理。
    如果用代理IP,从哪找那么多高质量的代理IP啊?
    55 条回复    2016-09-18 15:42:23 +08:00
    robinshi2010
        1
    robinshi2010  
       2014 年 1 月 3 日
    顶一下。这个问题也好奇。坐等明白人回复。
    jtacm
        2
    jtacm  
       2014 年 1 月 3 日   ❤️ 1
    有一个思路,反编译大众点评的andriod客户端,看andriod客户端用什么协议去读取数据的,模仿之。
    Mr2
        3
    Mr2  
       2014 年 1 月 3 日
    @jtacm 客户端不是一个IP也没有短时间访问大量商店页面吧
    pirex
        4
    pirex  
       2014 年 1 月 3 日
    你可以先采集IP地址来练手
    Ever
        5
    Ever  
       2014 年 1 月 3 日   ❤️ 2
    去应聘dianping DBA.
    kchum
        6
    kchum  
       2014 年 1 月 3 日
    @Ever 好方法,哈哈。
    est
        7
    est  
       2014 年 1 月 3 日   ❤️ 1
    @Ever
    @kchum

    去应聘dianping机房网管可能更快。
    wtl
        8
    wtl  
       2014 年 1 月 3 日
    每次被封之后 断开adsl 重新拨号
    xdeng
        9
    xdeng  
       2014 年 1 月 3 日
    @jtacm 抓包就可以了吧 还反编译?
    Lelouchcr
        10
    Lelouchcr  
       2014 年 1 月 3 日   ❤️ 1
    试试看用goagent来做代理~
    goagent每次发出的请求的地址是不确定的
    noahzh
        11
    noahzh  
       2014 年 1 月 3 日
    用一个可以自动切换ip 的路由,大年见过大神用一台笔记本加自动切换ip的路由,用erlang写的程序把大众点评数据全都跑下来了,大众点评还内部开会讨论这个问题了....
    chens
        12
    chens  
       2014 年 1 月 3 日
    可以去抓site:www.dianping.com
    pc10201
        13
    pc10201  
    OP
       2014 年 1 月 3 日
    @xdeng 我研究了一下大众点评的anroid客户端,是基于HTTP协议的,但采用了某种特殊的流量压缩技术,用普通的抓包软件查看都是乱码~
    suckli
        14
    suckli  
       2014 年 1 月 3 日
    修改ip包头的源地址~
    yushiro
        15
    yushiro  
       2014 年 1 月 3 日
    曾经采集过, 1秒1个还是太频繁, 我记得当时是1~5秒随机延迟进行采集的, 不过我采集量不大, 也就采集了10w家店铺。
    allenforrest
        16
    allenforrest  
       2014 年 1 月 3 日
    @pc10201 居然不是 https 的?
    arron
        17
    arron  
       2014 年 1 月 3 日
    大多数路由器也就一个http请求就可以重连的,然后定时去重连。 一般20秒就重连换ip了。 这样会慢点儿, 我记得两年前这么采了dianping 80万数据的样子, 1~2天时间吧。
    上面看你那几百个代理已经够用了,采集一轮,第二轮又可以使了。 点评又没限制一天你一个ip的采集数量。也可以每次换着ip采集,这样同一ip的采集间隔时间就很长了。
    arron
        18
    arron  
       2014 年 1 月 3 日
    另外两三年前,我记得点评的店铺我基本都采集了,估摸着漏掉的加起来也就100万数据。
    Livid
        19
    Livid  
    MOD
    PRO
       2014 年 1 月 3 日   ❤️ 2
    我真的不明白为什么要研究这方面的技术,你不可能靠采集来的数据做一个比点评更好的网站。
    tokki
        20
    tokki  
       2014 年 1 月 3 日
    中国人力很便宜
    crny520
        21
    crny520  
       2014 年 1 月 3 日   ❤️ 2
    @Livid 这就是中国式嘛,想省工人录数据。而且VC和天使都是看数据量和用户量的,不在意清楚你数据那里来的。
    sivacohan
        22
    sivacohan  
    PRO
       2014 年 1 月 3 日
    @Livid

    我抓过58同城的数据。量比较少,大概几千条。
    需求的产生是一个朋友去找了一份做理财产品的工作,似乎是做外汇的机构。然后他们的Leader让他们找2000个做金融,理财方面的联系人的电话。
    这个数据的意义可能不仅仅是复制一个点评,而是因为点评本身不出售符合某种聚合要求的数据,就导致了这种抓取需求的出现。
    wuyadong
        23
    wuyadong  
       2014 年 1 月 3 日
    我们拿到了点评的全网数据,cookie,代理,抓取间隔,注意这些东西,就能抓到了。
    imcj
        24
    imcj  
       2014 年 1 月 3 日
    抓到了以后提供一个公开的API给大家读吧。
    binux
        25
    binux  
       2014 年 1 月 3 日
    @noahzh 按照楼主一个IP能采集1000条数据,点评一共1500w数据计,路由需要换1.5万次IP。
    wangtao
        26
    wangtao  
       2014 年 1 月 3 日
    尽量模拟用户访问,不让点评觉得你是个机器人。。
    YouXia
        27
    YouXia  
       2014 年 1 月 3 日 via Android
    @binux 求学长分享下好的思路。THX。
    phyng
        28
    phyng  
       2014 年 1 月 3 日
    @pirex 你还别说,前段时间我就是这么干的,当然我说的不是抓大众点评
    likuku
        29
    likuku  
       2014 年 1 月 3 日   ❤️ 1
    @wangtao 同意的说~ 既然「这就是中国式嘛,想省工人录数据。而且VC和天使都是看数据量和用户量的,不在意清楚你数据那里来的。」 那么自己作机器人程序完全凭空捏造就好了。
    zencoding
        30
    zencoding  
       2014 年 1 月 3 日 via Android
    伪造蜘蛛也不行吗?那就上Tor
    pythoner
        31
    pythoner  
       2014 年 1 月 3 日
    建议从移动客户端入手。比如iphone/安卓 app,比如网站手机版
    ibolee
        32
    ibolee  
       2014 年 1 月 3 日
    不知道你这是个什么情况

    之前采集过百度知道。用了一个专属asdl网线,2M,采集被屏蔽后,重启路由器自动获取新IP

    如此周而复始,周而复始。。。
    yanng
        33
    yanng  
       2014 年 1 月 3 日 via iPad   ❤️ 1
    感觉点评的立场已经非常明确了,不让采。为什么还去采呢?别作恶。
    dingyaguang117
        34
    dingyaguang117  
       2014 年 1 月 3 日
    去年抓过点评美食的几十万POI数据,大概1秒一个,5台服务器一起爬的
    the13matrix
        35
    the13matrix  
       2014 年 1 月 3 日
    不建议楼主买代理,那可能是黑客玩剩的,小心背黑锅。
    我有2w只鸡,用i2p控制的,全部开出口代理不难,但速度极慢。5秒一个请求就不错了。
    powerfj
        36
    powerfj  
       2014 年 1 月 3 日
    很不解,如果一秒钟一个的话,那对于比较大的公司,代理出口上网的话,点评不就上不了了?
    underone
        37
    underone  
       2014 年 1 月 4 日
    点评的开放平台不能满足获取数据的需求吗……
    virushuo
        38
    virushuo  
       2014 年 1 月 4 日 via iPad
    @Livid 抓数据通常不会为了复制原站,而是做一些其他用途。比如用来监控上海饭馆新开业数量和倒闭数量什么的,不是很有趣?
    Livid
        39
    Livid  
    MOD
    PRO
       2014 年 1 月 4 日
    @virushuo 理解了……谢谢
    bengol
        40
    bengol  
       2014 年 1 月 4 日
    难道lz不做压力控制?
    raincious
        41
    raincious  
       2014 年 1 月 4 日
    @Livid 很明显这是被504弄怕了。
    colincat
        42
    colincat  
       2014 年 1 月 4 日   ❤️ 1
    多线程 多机器 随机延迟5-10秒,通过不断变换IP每采集100个换一次IP,不断重复上述过程,采集需要不断的测试。还有很多策略不宜公开,反正逆向思维,如果你做这些网站如何防范,然后做出对应的策略,基本上没有不能采的站。
    吼吼 ~
    我发现我对各家的策略都很熟悉了,常年采集各大互联网网站,基本都被我攻陷了~
    colincat
        43
    colincat  
       2014 年 1 月 4 日   ❤️ 1
    @Livid 这些数据很有用的,可以做大数据分析,我采这些都是用来做hadoop分析的,要不哪来那么多数据呢。。。
    freewizard
        44
    freewizard  
       2014 年 1 月 4 日   ❤️ 2
    即使不获得任何商业利益,抓取大众点评网站数据明确违反了他们的许可协议
    http://www.dianping.com/aboutus/zhishichanquan.html
    http://www.dianping.com/aboutus/useragreement
    肯定有民事诉讼的风险

    同时如在中国境内抓取或提供抓取工具也有触犯刑法修正案(七)的可能。
    http://www.gov.cn/flfg/2009-02/28/content_1246438.htm
    zack
        45
    zack  
       2014 年 1 月 4 日
    采集数据这件事情本身真没有什么值得练手的,除非是想研究更尖端的爬虫数据。如果是要做一些数据分析的话,采样一些数据就够了,没必要去钻研那些反抓取的策略,那些东西来来回回也不过就是那几个套路,其实没什么乐趣,也不是什么值得好奇的问题,太多人天天在用粗糙的手法做这样的工作了。
    doublleft
        46
    doublleft  
       2014 年 1 月 5 日
    @chens 好方法
    oldcai
        47
    oldcai  
    PRO
       2014 年 1 月 6 日
    @freewizard “提供专门用于侵入、非法控制计算机信息系统的程序、工具,或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严重的,依照前款的规定处罚。”

    抓取好像不算侵入、非法控制
    freewizard
        48
    freewizard  
       2014 年 1 月 7 日   ❤️ 1
    @oldcai “采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据”
    oldcai
        49
    oldcai  
    PRO
       2014 年 1 月 7 日
    @freewizard 受教。
    lazybios
        50
    lazybios  
       2014 年 2 月 15 日
    @pc10201 怎么研究啊 用什么抓apk的包
    pc10201
        51
    pc10201  
    OP
       2014 年 2 月 15 日
    keven
        52
    keven  
       2014 年 3 月 23 日
    目前貌似只有“云采集”对比较有效,云采集就是利用庞大的云端计算机集群来采集,国内有个八爪鱼采集器,有这种技术,而且还对采集速度有智能调控。
    duyaofei
        53
    duyaofei  
       2015 年 1 月 12 日
    @pc10201 楼主,有采集到没,或者有什么解决的思路不
    reall3116
        54
    reall3116  
       2015 年 1 月 15 日
    @pc10201 楼主最后有什么好的解决方法么?我一直都在用相关的工具来拿电商的评论,被禁掉真是最仁慈的反爬虫策略了…… 就算是每次请求都延迟或者换IP,当数据量相当大的时候时间成本都是不可想象的
    dgivan
        55
    dgivan  
       2016 年 9 月 18 日
    每一,别一天干掉一个站,慢点爬,设置下载延迟
    第二,修改请求头,浏览器
    第三,用高质量代理。企业建议用:阿布云代理等等
    第四,禁止 Cookie
    第五,分布式爬取
    可以用下这个代理: http://www.abuyun.com
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3708 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 04:28 · PVG 12:28 · LAX 20:28 · JFK 23:28
    ♥ Do have faith in what you're doing.