All Projects → monkey-soft → Scrapy_IPProxyPool

monkey-soft / Scrapy_IPProxyPool

Licence: other
免费 IP 代理池。Scrapy 爬虫框架插件

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Scrapy IPProxyPool

Python3 Spider
Python爬虫实战 - 模拟登陆各大网站 包含但不限于:滑块验证、拼多多、美团、百度、bilibili、大众点评、淘宝,如果喜欢请start ❤️
Stars: ✭ 2,129 (+2029%)
Mutual labels:  spider, crawl, scrapy
Haipproxy
💖 High available distributed ip proxy pool, powerd by Scrapy and Redis
Stars: ✭ 4,993 (+4893%)
Mutual labels:  spider, scrapy, ipproxy
Fp Server
Free proxy server, continuously crawling and providing proxies, based on Tornado and Scrapy. 免费代理服务器,基于Tornado和Scrapy,在本地搭建属于自己的代理池
Stars: ✭ 154 (+54%)
Mutual labels:  spider, scrapy, proxypool
Fbcrawl
A Facebook crawler
Stars: ✭ 536 (+436%)
Mutual labels:  spider, crawl, scrapy
Proxy pool
Python爬虫代理IP池(proxy pool)
Stars: ✭ 13,964 (+13864%)
Mutual labels:  spider, crawl, proxypool
Spiderkeeper
admin ui for scrapy/open source scrapinghub
Stars: ✭ 2,562 (+2462%)
Mutual labels:  spider, scrapy
Spider job
招聘网数据爬虫
Stars: ✭ 234 (+134%)
Mutual labels:  spider, scrapy
Web-Iota
Iota is a web scraper which can find all of the images and links/suburls on a webpage
Stars: ✭ 60 (-40%)
Mutual labels:  spider, scrapy
gathertool
gathertool是golang脚本化开发库,目的是提高对应场景程序开发的效率;轻量级爬虫库,接口测试&压力测试库,DB操作库等。
Stars: ✭ 36 (-64%)
Mutual labels:  spider, crawl
Fooproxy
稳健高效的评分制-针对性- IP代理池 + API服务,可以自己插入采集器进行代理IP的爬取,针对你的爬虫的一个或多个目标网站分别生成有效的IP代理数据库,支持MongoDB 4.0 使用 Python3.7(Scored IP proxy pool ,customise proxy data crawler can be added anytime)
Stars: ✭ 195 (+95%)
Mutual labels:  spider, proxypool
gospider
⚡ Light weight Golang spider framework | 轻量的 Golang 爬虫框架
Stars: ✭ 183 (+83%)
Mutual labels:  spider, crawl
small-spider-project
日常爬虫
Stars: ✭ 14 (-86%)
Mutual labels:  spider, scrapy
Gerapy
Distributed Crawler Management Framework Based on Scrapy, Scrapyd, Django and Vue.js
Stars: ✭ 2,601 (+2501%)
Mutual labels:  spider, scrapy
Py Elasticsearch Django
基于python语言开发的千万级别搜索引擎
Stars: ✭ 207 (+107%)
Mutual labels:  spider, scrapy
scrapy helper
Dynamic configurable crawl (动态可配置化爬虫)
Stars: ✭ 84 (-16%)
Mutual labels:  spider, scrapy
Ok ip proxy pool
🍿爬虫代理IP池(proxy pool) python🍟一个还ok的IP代理池
Stars: ✭ 196 (+96%)
Mutual labels:  spider, proxypool
crawler-chrome-extensions
爬虫工程师常用的 Chrome 插件 | Chrome extensions used by crawler developer
Stars: ✭ 53 (-47%)
Mutual labels:  spider, crawl
torchestrator
Spin up Tor containers and then proxy HTTP requests via these Tor instances
Stars: ✭ 32 (-68%)
Mutual labels:  scrapy, proxypool
NScrapy
NScrapy is a .net core corss platform Distributed Spider Framework which provide an easy way to write your own Spider
Stars: ✭ 88 (-12%)
Mutual labels:  spider, scrapy
devsearch
A web search engine built with Python which uses TF-IDF and PageRank to sort search results.
Stars: ✭ 52 (-48%)
Mutual labels:  spider, scrapy

现在很多网站都是对单个 IP 地址有访问次数限制,如果你在短时间内访问过于频繁。该网站会封掉你 IP,让你在一段时间内无法正常该网站。突破反爬虫机制的一个重要举措就是代理 IP。拥有庞大稳定的 IP 代理,在爬虫工作中将起到重要的作用,但是从成本的角度来说,一般稳定的 IP 池都很贵。因此,我为 Scrapy 爬虫编写个免费 IP 代理池插件。

1 特点

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

2 收集的代理网站

  • 无忧代理(data5u)
  • ip181 代理
  • 快代理
  • 西刺代理

3 项目说明

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

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

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

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

  • ProxyModel.py ProxyModel.pymodel 包下。它是 IP 代理对象类。

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

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

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

4 使用方法

4.1 安装依赖

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

  • requests
  • apscheduler
  • pymysql

4.2 修改配置

  1. startrun.pyconfig 文件夹proxy 文件夹 复制到你的 Scrapy 项目的主目录下。 例如你项目名为 demo,那么你需要放到 demo 的目录下。

  2. 修改 config 包下的 config.py 里面的 Mysql 相关配置信息。

  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,

        # 设置自定义重连中间件
        'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': None,
        'proxyPool.scrapy.middlewares.RetryMiddleware': 95,
    }
  1. 修改 startrun.pyspider_list 列表中的爬虫名。

  2. 最后运行 startrun.py 即可。startrun.py 会先抓取 ip 代理网站的 ip,然后再使用这些代理爬取目标网站。

5 写在最后

本项目会持续维护。如果你有宝贵的完善建议或者有更多的代理网站,可以联系我。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].