问 题

为了避免爬虫被封 IP ,网上搜索教程说需要建立代理池。但是付费代理都好贵。。。不过好在网上已经有不少免费提供代理的网站了。因此,我打算写个爬虫去获取这些免费 IP ~

策略步骤

用种子关键词例如“代理 IP ”在各个搜索引擎上搜索,获取候选 URL

爬取候选 URL ,将代理地址储存下来

验证代理地址,将可用的代理地址放入代理池

难点

如何去验证维护这些代理地址

如何知道哪些代理地址适合哪些网站(可用性,响应时间)

效率问题(之前写过简单的验证脚本,但是效率非常低)

小伙伴们有不有什么好的办法能解决这些问题呢?

解决方案

大概写下吧,恰好之前做过一样的工作,当时也是需要代理,然后自己写了爬虫做自动获取和自动更新。

代理地址的话我没有去让爬虫自己选网站,而是人工筛选了几个提供免费代理的网站然后分别写了一些爬虫去爬不同的代理网站;

针对你说的难点:

验证的话初次爬到的地址会直接先验证是否可用,能用再存入数据库或持久化;因为代理的不可靠性,需要定时检查抓到的代理是否可用,我是直接在 uWSGI 服务器起了一个定时任务,每半小时会检查一次,每一小时会抓一次新的代理,当然你也可以用 crontab 之类的定时任务做;

直接用抓到的代理访问需要访问的网站,如果需要针对不同网站提供不同代理可以验证后把相关验证信息一起储存;

效率问题好处理,网络验证操作都是 i/o 密集型任务,用协程、多线程、多进程都可以解决,python 的 gil 不影响多线程提高 i/o 密集型任务的效率

multithreading-spider之前我用 多线程 + queue 做的一个简单的代理爬虫,src 的 demo 里是具体例子,使用了简单的生产者消费者模型,爬到代理地址的爬虫当做生产者,验证代理可用性的爬虫当做消费者,可以显示具体任务进度。

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

python爬虫面试代理池_python - 如何为爬虫构建代理池相关推荐

  1. python 定时自动爬取_python实现scrapy爬虫每天定时抓取数据的示例代码

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  2. python定时爬取数据_python实现scrapy爬虫每天定时抓取数据的示例代码

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  3. python全栈工程师薪水_python全栈+爬虫+自动化+AI=python全能工程师-挑战年薪30W+

    如果你想选择一种语言来入门编程,那么Python绝对是首选! Python非常接近自然语言,精简了很多不必要的分号和括号,非常容易阅读理解.编程简单直接,更适合初学编程者,让其专注于编程逻辑,而不是困 ...

  4. python开发面试简历分享_Python面试简历分享。

    在学习过程中存在迷茫的,不知道该如何学习的,可以根据下面在工作中用到的技术点针对性的学习. 分享前一段我的python面试简历,自我介绍这些根据你自己的来写就行,这里着重分享下我的项目经验.公司职责情 ...

  5. python网络爬虫入门小程序_Python 实现网络爬虫小程序

    转载请注明作者和出处: http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 前言 ...

  6. python爬虫程序的流程图_Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)...

    ###1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到 ...

  7. python爬虫有趣的应用软件_Python学习,爬虫不一定非要抓数据,也可以做自己喜欢的应用程序...

    写在前面的话 最近各种负面消息,对爬虫er来说,并不是很友好,当然这个是对于从业者来说的,对像我这样的正在学习python的个人来说,python爬虫的学习只需要保持以下几点,基本不会出现大的问题:遵 ...

  8. python爬虫有什么好处_python为什么叫爬虫 python有什么优势

    作为一门编程语言而言,Python是纯粹的自由软件,以简洁清晰的语法和强制使用空白符进行语句缩进的特点从而深受程序员的喜爱.很多程序员都会把python叫做爬虫,那么你们知道python为什么叫爬虫吗 ...

  9. python爬虫40个项目_python三个爬虫项目代码实例

    本篇文章小编给大家分享一下python三个爬虫项目代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 爬取内涵段子: #encoding=utf-8 import ur ...

最新文章

  1. iOS开发里的Bundle是个啥玩意?!
  2. sql 注入 相关函数
  3. Angular jasmine spied Method toHaveBeenCalled的执行原理
  4. AES加密算法的学习笔记
  5. 什么是二叉树?以及二叉树如何遍历?
  6. python图片保存重命名_Python实现重命名一个文件夹下的图片
  7. spss 卡方检验_SPSS篇—卡方检验
  8. ha 配置ssl_haproxy ssl 配置方式-阿里云开发者社区
  9. ubuntu修改系统时区和jvm时区
  10. EDIUS 3.6快捷键
  11. wifi配网过程的详细介绍
  12. Jmeter(一)-使用http proxy代理录制脚本
  13. Auto.js 设置通知栏
  14. 从一个html页面传值到另一个页面,两个html之间的值传递(js location.search用法)
  15. oracle wallet java_oracle wallet实践及常用维护操作
  16. 快速入门开发实现订单类图片识别结果抽象解析
  17. 追女孩的九大禁忌!!!
  18. Android进入欢迎界面前显示黑乎乎的或者白白的布局
  19. 常用SQL语句(一)
  20. opencl学习(四)

热门文章

  1. 2022年全球及中国工程机械行业头部企业市场占有率及排名调研报告
  2. 考研更难了吗?2023年全国考研人数达474万,考录比约为4:1 | 美通社头条
  3. “披荆斩棘”的储能 BMS
  4. 深度神经网络全面概述:从基本概念到实际模型和硬件基础
  5. elf格式转换为hex格式文件的两种方法 1
  6. 《近匠》专访GE 秦川、唐翊国——Predix工业物联网平台带来了什么
  7. 欧盟商标注册 欧盟商标注册流程 马德里商标注册
  8. 项羽为什么会输给刘邦
  9. AG1280Q48烧录错误解决办法--AGM FPGA技术分享
  10. java中的setLayOut(null)怎么理解