您的位置:首页 > 新闻资讯 >文章内容
编写Scrapy框架爬虫代理IP池插件
来源:互联网 作者:admin 时间:2019-10-08 10:56:41

  基本上现在很多网站都做了反爬虫的设置,特别是对单个IP的访问次数会做出限制,就是说如果你用同一个IP地址反复多次访问网站,这个操作如果在同一时间段次数太多,就会被网站认为是爬虫,那么你就可以跟这个IP地址说再见了,网站会禁止这个IP的访问。所以,我们爬虫才会需要用到代理IP。下面介绍一个代理IP的爬虫插件设置方法。


编写Scrapy框架爬虫代理IP池插件


  该插件适用的程序是基于 Scrapy 框架编写的爬虫程序。插件通过爬取免费代理地址,然后过滤掉无效 IP 代理后存放到 Mysql 数据库。另外,它会每 10 分钟轮询数据库中的 IP 代理数量。如果代理地址因为连接失败次数超过 3 次被删除,从而导致代理不够,它会后台重新爬取新的 IP 代理。


  项目构成:


  1、startrun.py


  项目的主入口。它负责启动 Scrapy 爬虫和代理池。


  2、your_scrapy_project


  该目录下主要存放两个文件:config.py 和 settings.py。config.py 是代理池的项目配置信息。而 settings.py 是你的 Scrapy 爬虫项目的配置参考代码。


  3、ProxyPoolWorker.py


  ProxyPoolWorker.py 是 IP代理池模块的管理类,负责启动和维护 IP 代理池。


  4、proxyDBManager.py


  proxyDBManager.py 位于 dbManager 包下。它是数据库操作类。主要工作是创建数据库表、往数据库中插入 IP 代理、查询数据库中剩余的 IP 代理总数、从数据库中随机查询一个 IP 代理、对连接超时或失败的 IP 代理做处理。


  5、proxyModel.py


  proxyModel.py 在 model 包下。它是 IP 代理对象类。


  6、requestEnginer.py


  requestEnginer.py 位于 requester 目录下。requestEnginer 是整个爬虫代理池的网络引擎。它采用 Session 的形式来发起 HTTP 请求。同时,它还负责验证代理地址有效性, 达到过滤掉无用 IP 代理的目的。


  7、scrapy


  scrapy 目录是一些 Scrapy 框架的自定义中间件。RandomUserAgentMiddleware.py 是为 HTTP 请求随机设置个 User-agent。middlewares.py 有两个职责。一是为 HTTP 请求随机设置个 IP 代理。二是负责捕获并处理 HTTP 异常请求。


  8、spiders


  该包主要是爬取各大代理网站的爬虫。


  项目使用:


  1、安装依赖


  使用本插件,你需要通过 pip 安装以下依赖:


  (1)requests


  (2)apscheduler


  (3)pymysql


  2、 修改配置


  (1) 将 startrun.py 放到你的 Scrapy 项目的主目录下。例如你项目名为 demo,那么你需要放到 demo 的目录下。


  (2) 修改 config.py 里面的 Mysql 相关配置信息。然后将其放到你的 Scrapy 项目的二级目录下。假如你项目名为 demo,那么你需要放到 demo /demo 的目录下。


  (3) 参考 setting.py,修改你的 Scrapy 项目中的 setting.py 文件。主要是在你项目中增加以下代码:


  # 默认使用 IP 代理池if IF_USE_PROXY: DOWNLOADER_MIDDLEWARES = { # 第二行的填写规则 # yourproject.myMiddlewares(文件名).middleware类 # 设置 User-Agent 'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None, 'proxyPool.scrapy.RandomUserAgentMiddleware.RandomUserAgentMiddleware': 400, # 设置代理 'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': None, 'proxyPool.scrapy.middlewares.ProxyMiddleware': 100, # 设置自定义捕获异常中间层 'proxyPool.scrapy.middlewares.CatchExceptionMiddleware': 105, }


  以上就是这款代理IP爬虫插件的设置流程,通过这种方式,我们能够获取庞大有效的代理IP,节省了成本,也有助于爬虫开展,一举多得。


相关文章内容简介
推荐阅读
  • 23 2019-12
    HTTP代理对爬虫有什么用?

    HTTP代理对爬虫有什么用?你对HTTP代理IP​这个字眼陌生吗?实际上这个字眼离你并不遥远。HTTP代理IP是将用户的IP进行更换,帮助用户在网上做一些事情。针对网络爬虫,小编下面就为大家讲述一

  • 26 2019-06
    代理IP的可用率有多高?

    代理IP的可用率有多高?这个可用率决定了我们能使用的代理IP数量,如果要选用代理IP,这个参数是一定要看的,那么目前代理IP的可用率有多高?

  • 18 2020-01
    QQ如何设置代理IP

    代理IP不仅可以运用在注册,投票,抢购,数据采集上,还可以应用到QQ登陆上,那就是使用HTTP代理​IP来登陆QQ,那么下面就简单为大家说一下,登陆QQ需要如何设置代理IP。

  • 02 2020-03
    ip加速器能突破网络限制吗

    动态ip是为了解决ip资源紧缺问题而出现的解决方案,这种ip的灵活性比较高,所以,在代理ip方面也经常会被用到。

  • 17 2020-09
    动态VPS和代理软件

    我们都知道,动态VPS和IP代理软件都有动态IP,那么它们有什么不同呢?今天就为大家详细介绍一下!

  • 25 2019-02
    关于爬虫遇到的各种限制问题

    爬虫被禁IP这是个非常常见的问题,应对的方法也唯有换IP了,不然怎么也避免开这IP被封的情况。除了IP被封外,爬虫还是会遇到其他的问题,若是不能成功的伪装过去,那么被发现是迟早的事

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

大客户经理微信

微信公众号

微信公众号

回到顶部