您的位置:首页 > 新闻资讯 >文章内容
使用代理IP开展爬虫工作准备流程
来源:互联网 作者:admin 时间:2019-09-10 10:16:00

  一个完整的爬虫代理服务是怎么样的呢?爬虫工作者的代理IP要从什么地方找,又怎么去测试是否有效呢?如果你也有以上疑问,今天机灵代理正好为大家带来有关搭建爬虫代理的教程讲解。


使用代理IP开展爬虫工作准备流程


  寻找代理


  程序猿不懂的时候就去寻找嘛,google、度娘,输入关键字:免费代理IP、代理IP,前几页几乎都是提供代理IP的网站,一一打开后观察发现,几乎都是一个列表页,展示少则几十、多至几百个IP。


  但是仔细观察你就会发现,每个网站提供的免费IP是有限的,拿来用几个就会发现,有的也已经失效了。当然,他们更倾向于你购买人家的代理,人家就靠这个赚钱嘛。


  身为狡猾的程序猿,当然不能因为这点困难就跪了,仔细想一下,既然搜索引擎能搜到这么多提供代理的网站,每个网站提供几十或几百个,假如有10家网站,那加在一起也有几百到几千个IP。


  那么好了,你要做的事情就是,把这些网站记录下来,用程序把IP抓过来就好了,想想是不是很简单?


  测试代理


  通过刚才的方式,应该可以获得几百或上千的代理IP了。


  但是,这些代理中,有很大一部分已经是失效的了。那么怎么办?如何知道哪些代理是有效,哪些是不可用的呢?


  很简单,挂上这些代理,访问某一个稳定的网站,然后看是否能正常访问,可以正常访问的就是可用的,不能访问的不就是无效的嘛。


  最快速的,用curl命令就可以测试某个代理是否可用。


  当然,这种方式只是为了演示方便,实际最好的方式是: 用多线程方式,使用代理去访问某个网站,然后输出可用的代理。 这样做能最快速的找出可用代理。


  使用代理


  现在已经可以通过上面的方式,找出可用的代理了,如果应用到程序中,应该不用我多说,大部分都应该会用了。 例如,刚才把可用的代理输入到某个文件中,每一行是一个代理,那么就可以这样使用:


  1、读取代理文件


  2、随机选择代理IP,发起HTTP请求


  这样,如果代理有几百个,基本上可以保持一段时间抓取某个网站的数据了,抓个几千几万条数据不成问题。


  但是,如果我想持续不断的从某个网站获取数据,或者是抓取上百万甚至上亿的网页数据,那这样肯定是不行的。


  持续不断供应代理


  刚才的方式是,一次性抓取某几个代理网站,然后通过程序测试每个代理是否可用,得到可用的代理列表。但是这只是一次性的,而且代理量往往很少,在持续抓取中肯定无法满足需要。那么怎么能持续不断的找到可用代理呢?


  1、找到更多的代理网站(数据基础)


  2、定时监控这些代理网站,获取代理


  3、拿到代理IP后,程序自动检测,输出可用代理(文件或数据库)


  4、程序加载文件或数据库,随机选取代理IP发起HTTP请求


  按照上面的方式,可以写出一个自动采集代理的程序,然后爬虫端就可以定时去文件/数据库中获取然后使用就可以了。但是有一个小问题,怎样知道每个代理的质量如何?也就是说,代理的速度怎么样?


  1、在检测代理时,记录请求响应时间


  2、响应时间从短到长,加权重值,响应短的使用率高一些


  3、限制某段时间内最大使用次数


  前面几点只是基础,这3点可以进一步优化你的代理程序,输出有优先级的代理列表,爬虫端根据权重和最大使用次数使用代理。这样做的好处:保证使用高质量代理,同时防止某一代理频繁使用防止被封。


  服务化


  上面经过一系列的完善和优化,已经搭建好了一个可用的代理服务,只不过是基于文件系统或数据库的。


  爬虫端要想使用这些代理,只能是读取文件或读取数据库,然后根据某种规则选择代理使用,这样做比较繁琐,能不能让爬虫端使用代理变得简单一些?那么就需要把代理访问做成服务化。


  有个大名鼎鼎的服务器软件squid,利用它的cache_peer邻居代理机制,就可以帮这个事情做的很完美。


  把代理列表的代理,按照squid的cache_peer机制按照一定格式,写在配置文件中即可。


  squid是个代理服务器软件,一般情况下是这样使用的,假如爬虫在机器A,squid安装在机器B,需要爬取的网站服务器是机器C,代理IP是机器D/E/F…


  1、不使用代理:爬虫机器A请求 —> 网站机器C


  2、使用代理:爬虫机器A —> 代理IP机器D/E/F/... —> 网站机器C


  3、使用squid:爬虫机器A—>squid(机器B,cache_peer机制管理调度代理D/E/F) —> 网站机器C


  这样做的好处就是:爬虫端不用考虑如何加载和选择可用代理,给出一个代理列表给squid,按照配置文件的规则,它就可以帮你管理和调度选择代理。最重要的是,爬虫端使用代理只需访问squid的服务端口就可以了!


  进一步整合


  现在服务化也搭建完成了,唯一差得一步就是整合:


  1、定时监控代理源网站(30分/1小时都可),解析出所有代理IP,入数据库


  2、从数据库中取出所有代理,访问某个固定的网站,找出访问成功的代理,更新数据库可用标记和响应时间


  3、从数据库中加载所有可用代理,通过某种算法,根据响应时间计算使用权重和最大使用次数


  4、按照squid的cache_peer格式,写入配置文件


  5、重新加载squid配置文件,刷新squid下的代理列表


  6、爬虫指定squid的服务IP和端口,进行纯粹的爬取操作


  一个完整的代理服务通过这样的方法就可以搭建完成,定时输出高质量代理。爬虫端不用关心代理的采集和测试,只管使用squid的统一服务入口爬取数据即可。


  以上就就是使用搭建爬虫代理的相关教程,希望能够帮助大家开展爬虫工作。


相关文章内容简介
推荐阅读
  • 08 2019-11
    区分API代理池与线程IP池

    通过API接口提取代理IP来进行使用,这种方式是很多人会使用到的途径。那么,API代理池跟线程IP池之间,存在什么差异呢?

  • 24 2019-09
    使用代理IP完成自动投票

    代理IP的功能其实是非常强大的,除了我们常常听说的爬虫之外,还有其他渠道也能够派上用场,而其中有一些说不动你也接触过。像是互联网营销这一块,现在线上营销的比重是越来越大,大

  • 14 2019-08
    抓取免费的代理IP怎么使用

    抓取免费的代理IP怎么使用?当我们需要通过代理访问某一网站时,首先需要从redis中随机选出一个代理ip,然后尝试通过代理ip是否能连到我们需要访问的目标网站,因为这些代理IP是公共使用

  • 20 2019-03
    不知道怎么制作代理ip池?抓取免费IP搭建代理IP池教程

    有可能是因为使用了低质量的代理IP,可能是你的IP进了该站的黑名单,某一段时间内不能访问该站的资源。那么该怎么解决这个问题?比较有效的方式是使用代理ip,而如果有一个自己的代理ip

  • 31 2019-03
    Python爬虫学习,IP代理是如何配合爬虫工作的?

    在大数据时代,爬虫其实是可以做很多的事情,比如爬取商品价格、旅游路线价格、热门音乐、股票信息、机票信息等等,几乎是所有的信息,爬虫都是可以爬取的。

  • 02 2019-07
    怎么找http或者socks代理

    有些项目需要的代理ip比较多,IP量不足,怎么办呢?想要建个代理ip池,难的是怎么找http或者socks代理,你用什么数据库都行,mysql,mongodb或者redis,就是简单存一个ip和port的地址,然后需要写

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部