V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aa233322aaa
V2EX  ›  Java

关于网络爬虫 中遇到的一些问题

  •  
  •   aa233322aaa · 2015-04-05 14:53:31 +08:00 · 2700 次点击
    这是一个创建于 3549 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学习爬虫,用的是Java
    但是在抓取某个站点的时候ip一直被封,于是去网上爬虫了一些代理IP 但是效果不理想
    我想问一下 针对各别站点 如果每天要访问上百万次 这种情况要怎么办?
    我看一些文章 他们几百个IP 就能解决,但是 单个IP 一定时间内访问次数过多 应该会被封吧
    像那些 每天抓取几千万 甚至上亿数据 他们是怎么做到的? 用的adsl 拨号吗 ?
    最主要是他们怎么 做到不被封IP
    有没大大指点一下

    7 条回复    2015-04-09 16:59:13 +08:00
    kslr
        1
    kslr  
       2015-04-05 18:55:18 +08:00
    兵来将挡,水来土掩
    anexplore
        2
    anexplore  
       2015-04-07 18:42:46 +08:00
    对一个网站,假设100个ip,一个ip 1s一个网页,一天8w,100个ip一天就是800w了。假设N个网站,一个ip一秒100左右(N个网站轮转),那么一天就是800w了,10个ip一天就是8000w了。假设一个网页平均50kB那么每秒流量就是100*50kB= 5MB;多整点代理ip吧
    aa233322aaa
        3
    aa233322aaa  
    OP
       2015-04-08 16:37:26 +08:00
    @anexplore 我还有点疑问,1.代理IP的的有效时间,一般代理IP的有效时间不是很短吗?2.同一个IP爬取一个站点,在一定时间内要是数量过多的话 不是会被封吗?
    anexplore
        4
    anexplore  
       2015-04-08 21:14:09 +08:00
    @aa233322aaa 搞一个代理失效验证机制,验证通过推送给下载端;下载端动态更新代理;一个站点的dns可能会对应若干个ip,所以要轮转访问站点的若干ip,减小被封的概率;1s或者几秒访问一个站点一次,一般不会被封掉的;
    aa233322aaa
        5
    aa233322aaa  
    OP
       2015-04-09 09:47:56 +08:00
    @anexplore 谢谢你的解答,我还有些疑问。。。我要怎么知道这个站点的其他IP?通过浏览器访问看连接详情吗?还有假设我4S一次访问的频率 ,那一天也有2W次的量,这种数量一般不会是人为点击的吧。。那些反爬虫严格一点的网站不会封吗?如果加大访问间隔 是不是需要用多台服务器 开多线程来保证量?
    anexplore
        6
    anexplore  
       2015-04-09 10:39:57 +08:00   ❤️ 1
    @aa233322aaa
    1.解DNS自然就知道网站的IP是什么,而且在不同地狱解析同一个网站的DNS可能还是不一样的;
    2.要遵循robots协议;控制频率;也可以控制时间段,比如晚上访问量少的时候爬;被封掉就让频率更小;反爬虫很严格的站点毕竟还是少数;
    3.一般一个服务都只有一个外网ip,所以要用多ip自然得多个服务器了。
    这些东西多试一试就知道了。。。
    aa233322aaa
        7
    aa233322aaa  
    OP
       2015-04-09 16:59:13 +08:00
    @anexplore 谢谢,我再去试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2778 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:04 · PVG 20:04 · LAX 04:04 · JFK 07:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.