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


相关文章内容简介
推荐阅读
  • 08 2019-04
    爬虫都要使用动态代理ip吗?Java分布式爬虫Nutch呢?

    开始学爬虫之时,最先接触的是简单的爬虫,随着学习的深入,慢慢开始接触分布式爬虫。我们使用分布式爬虫主要是为了加大数据的爬取,也就是大批量URL管理。

  • 21 2019-12
    注册账号可以用代理IP​吗?

    注册账号可以用代理IP​吗?在现在这个网络为主导信息的时代,新旧交替迅速,一些事物的产生也是一夜之间就遍地开花,就像代理IP,刚开始出现是为了满足人们访问的网站的需要,慢慢的人

  • 17 2019-05
    手动换IP还是自动换IP好?

    手动换IP还是自动换IP好?如今很多人对于很多现代化的平台并不是十分信任,总觉得通过自己手动操作看到平台运行过程才能够更加放心。这种人虽然对工作更加负责,但是却更浪费时间。根

  • 24 2019-04
    代理IP可以隐藏IP去浏览网站

    代理IP可以隐藏IP去浏览网站,这个是代理IP的一个功能,很多人都经常使用的,可以隐藏IP去网站采集信息,可以隐藏IP去网站发帖,或者是发软件,或者是回复等等。

  • 23 2019-03
    爬虫代理IP选择,使用动态转发代理更可靠

    虽然说大数据的应用很多时候都没有保护好用户的信息,但大部分的企业依然都会使用到爬虫来获取很多的数据,即使有限制,也一样可以利用代理IP来突破的,无非就是要花些成本,找个好用

  • 22 2019-02
    什么是HTTP代理

    大家对HTTP代理应该都非常熟悉,它在很多方面都有着极为广泛的应用。HTTP代理分为正向代理和反向代理两种,后者一般用于将防火墙后面的服务提供给用户访问或者进行负载均衡

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

大客户经理微信

微信公众号

微信公众号

回到顶部