首页 > 编程语言 > 详细

Python爬虫-代理池-爬取代理入库并测试代理可用性

时间:2019-05-27 21:22:10      阅读:161      评论:0      收藏:0      [点我收藏+]

目的:建立自己的代理池。可以添加新的代理网站爬虫,可以测试代理对某一网址的适用性,可以提供获取代理的 API。

整个流程:爬取代理 ----> 将代理存入数据库并设置分数 ----> 从数据库取出代理并检测 ----> 根据响应结果对代理分数进行处理 ----> 从 API 取出高分代理 ----> 用高分代理爬取目标网站 

分析:

1、爬虫类的编写:负责抓取代理并返回。

  • 因为不同的代理网站的网页结构不同,所以需要单独为每一个代理网页写爬虫。
  • 调用每个爬取方法,依次返回结果。  

2、数据库类的编写:负责代理的存取与代理分数的设置。

  • 判断待存入代理是否存在,不存在便存入数据库。
  • 将代理存入数据库,首次入库的代理分数设置为100。
  • 代理测试失败时,代理分数做相应的扣除,分数低于指定值时从数据库中移除。代理测试成功时,将代理分数重新设置为100。
  • 需要使用代理时,从数据库中随机取出高分代理。

3、保存类的编写:负责执行爬取,并将结果存入数据库。

  • 判断数据库是否已经达到满足值,根据返回值决定是否执行爬取。
  • 将爬取得到的结果存入数据库

4、测试代理类的编写:负责测试代理对目标网站的可用性。

  • 用每一个代理爬取目标网站,根据响应状态码对代理分数进行设置。

5、提取代理 API 的编写:负责提供获取代理信息的接口。

具体实现:

1、Crawler:

技术分享图片

2、RedisClient:

技术分享图片

3、Saver:

技术分享图片

4、Tester:

技术分享图片

5、API:

 技术分享图片

总结:这里我只爬取了两个代理网站的代理,西刺和快代理,可以在 Crawler 类中添加名称以 crwal_ 开始的方法来扩充。详细代码我放到 Github上了,https://github.com/ysl125963/proxy-pool

Python爬虫-代理池-爬取代理入库并测试代理可用性

原文:https://www.cnblogs.com/yangshaolun/p/10932846.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!