zoukankan      html  css  js  c++  java
  • 一些令你瞠目结舌的爬虫技巧[转]

    众所周知,爬虫很容易遇到被封IP的情况,最近国外一家公司做过一件很有意思的事情,跟大家一起分享分享。对于IP被封,大多数情况下是可以换代理来解决的。于是这家公司做了两件事情:

    第一,开发了一款软件,包括Android/iOS/WP/OS X/Windows/Linux全平台支持,使用这个软件就可以FQ出去了(不只是中国有FQ的需求哟,也不只是有墙的时候才需要翻),但是你免费使用他的FQ服务的同时,需要接受一条协议:将自己的终端作为这个系统代理出墙的一个节点。

    第二,一套动态分配代理IP的系统。主要是对于爬虫,需要使用代理IP的时候,只需要设置一个特定的proxy,连接到他们的系统之后,会自动从目前活跃的终端节点中挑选一个代理你的请求,你不需要一直切换代理,却可以每次请求使用不一样的出口IP。

    这个系统大概有2000多万用户使用代理服务,意味着有2000万IP代理可用,基本上可以解决大多数IP被封的问题了。而第二步中的服务,价格是500美元每月(不限时间,限制流量),而且在称为付费用户之前,还得经过一次Skype的面试。

    这算是一个不错的爬虫技巧了,不但解决了代理不够的难题,还为他人爬虫问题提供了简单粗暴的解决方案,总之钱能够解决的问题就是小问题。后来,这家公司自己不再抓取数据了,改为出售代理IP,活得非常滋润。

    听知乎的朋友说过,当时爬一个网站的时候需要大量代理,正好手上有不少PHP的虚拟空间,就是万网卖的那种,几十块钱一年,只能上传PHP代码。就用PHP写了一个代理脚本,应该算应用层代理了吧,还加了双向接口验证,伪装成普通文件,瞬间有了几十个代理,一直在用,这个代理好像也不可追踪。

    其实非常简单,把url用GET或者POST提交给PHP脚本,脚本用file_put_contents(url)获取数据,然后把数据返回给你就行了。

    还有一个知乎的朋友最近在学go,随手用go写了个小爬虫,从入口页开始解析并找到站内地址,然后开个goroutine去爬,对,没有控制线程数。用的公司的代理出口,然后顺手用hduoj做测试,结果瞬间把它爬挂了…

    说一个只有在大规模爬取的时候才用得到的技巧吧.

    比如你在建立一个汽车数据库,需要从上百万各种来源爬一大堆元数据,肯定不能靠人了,训练一个模型也太花时间.

    有一种简单可行的办法,首先去google或者垂直网站抓元数据

    想办法将元数据与它来源的url配对(比如google肯定会有来源url)

    这样对于一个url,你能知道它的提取结果是什么,然后能找到对应页面什么位置

    然后逆向出页面模板

    因为这些页面都是模板生成的,于是对整站套用模板, ok,数据出来了.

    刚开始写爬虫用的是urllib2,后来知道了requests,惊为天人。

    刚开始解析网页用的是re,后来知道了BeautifulSoup,解析页面不能再轻松。

    再后来看别人的爬虫,知道了scrapy,被这个框架惊艳到了。

    之后遇到了一些有验证码的网站,于是知道了PIL。但后来知道了opencv,pybrain。当在爬虫中用上人工神经网络识别出验证码,兴奋得守在爬虫旁边看他爬完全站。

    再后来知道了threading,知道了celery。

    不断的学习,不断的接触和知道更多的东西,爬虫与反爬虫的对抗会一直进行下去。

    本文固定链接:http://www.phpxs.com/post/4688



    文/dayan(简书作者)
    原文链接:http://www.jianshu.com/p/33e7340e728a
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    Entity SQL 初入
    ObjectQuery查询及方法
    Entity Framework 的事务 DbTransaction
    Construct Binary Tree from Preorder and Inorder Traversal
    Reverse Linked List
    Best Time to Buy and Sell Stock
    Remove Duplicates from Sorted Array II
    Reverse Integer
    Implement Stack using Queues
    C++中const限定符的应用
  • 原文地址:https://www.cnblogs.com/jexus/p/5471665.html
Copyright © 2011-2022 走看看