您的位置:首页 > 新闻资讯 >文章内容
编写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,节省了成本,也有助于爬虫开展,一举多得。


相关文章内容简介
推荐阅读
  • 03 2019-04
    网站和网络爬虫之间谁胜谁负?看你的代理IP好不好用

    网络爬虫能够为一些企业带来便利,但是对于其他人来说,这可能并不是什么好事。因为网络爬虫收集到的信息,除了对数据收集者有好处之外,会给其他人带来不少的麻烦.

  • 05 2019-07
    爬虫伪装请求头还是伪装IP地址好?

    爬虫伪装请求头还是伪装IP地址好?由于互联网上许多平台有限制,因此爬虫是无法直接去爬取网站的信息,最好的办法是伪装成为用户去爬取,怎么伪装呢?爬虫伪装请求头还是伪装IP地址好

  • 23 2019-03
    学习python爬虫,需要掌握网站抓取、伪装技巧、代理IP工具

    学习python爬虫,需要学习哪些知识?都说python比较容易学,而且用途也比较广,不管是进行数据的采集,还是做其他的一些开发,其实都可以使用python的。

  • 01 2019-07
    动态IP和静态IP能一起用么?

    动态IP和静态IP能一起用么?不管是单独使用动态IP还是静态IP,都是有缺点的,想要避免这些缺点,能否一起使用动态IP和静态IP呢?

  • 27 2019-02
    爬虫代理有哪些分类

    ​对于爬虫来说,由于爬虫爬取速度过快,在爬取过程中可能遇到同一个IP访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封IP,这样会给爬取带来极大的不便。

  • 11 2019-10
    代理IP爬取梨视频被封如何解决?

    在使用代理IP爬取的时候,IP被封了怎么解决?下面机灵代理为大家带来在爬取梨视频数据的案例来给大家梳理思路,主要步骤包括以下内容:

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961