pythonscrapy爬虫ip代理池_Scrapy 框架插件之 IP 代理池
图片来自 unsplash
现在很多网站都是对单个 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.py 和 settings.py。config.py 是代理池的项目配置信息。而 settings.py 是你的 Scrapy 爬虫项目的配置参考代码。
ProxyPoolWorker.py
ProxyPoolWorker.py 是 IP代理池模块的管理类,负责启动和维护 IP 代理池。
proxyDBManager.py
proxyDBManager.py 位于 dbManager 包下。它是数据库操作类。主要工作是创建数据库表、往数据库中插入 IP 代理、查询数据库中剩余的 IP 代理总数、从数据库中随机查询一个 IP 代理、对连接超时或失败的 IP 代理做处理。
proxyModel.py
proxyModel.py 在 model 包下。它是 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 修改配置
将 startrun.py 放到你的 Scrapy 项目的主目录下。例如你项目名为 demo,那么你需要放到 demo 的目录下。
修改 config.py 里面的 Mysql 相关配置信息。然后将其放到你的 Scrapy 项目的二级目录下。假如你项目名为 demo,那么你需要放到 demo /demo 的目录下。
参考 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,
}
5 写在最后
本项目目前是第一版,可能有些不完善的地方。如果你有宝贵的完善建议或者有更多的代理网站,可以反馈给我。我会持续完善本项目。最后,本项目也在 github 上开源了。传送门
pythonscrapy爬虫ip代理池_Scrapy 框架插件之 IP 代理池相关推荐
- pythonscrapy爬虫 崔庆才_Scrapy爬虫(一):专题概要
Scrapy爬虫(一):专题概要 准备工作 在最近做的智能项目中,我们在获取到用户需求的文本后,需要对用户的行为意图进行分析,然后做出响应,比如语义解析.内容推荐.数据整合等.和windows小娜一样 ...
- pythonscrapy爬虫ip代理池_在Scrapy中使用IP池或用户代理(python3)
一.创建Scrapy工程 1 scrapy startproject 工程名 二.进入工程目录,根据爬虫模板生成爬虫文件 1 scrapy genspider -l # 查看可用模板2 scrapy ...
- 爬虫增加代理池:使用稳定第三方芝麻代理IP 教程(详细可用)
先大致说一下,博主在用自己写的脚本为接近100人打卡,结果有一天访问错误,折腾了半天最后只能想到ip被封了,服务器的ip 只能免费更换两次,所以没办法只能另寻他路,不过当时我没弄代理池,我选择了手动打 ...
- Python搭建代理IP池(一)- 获取 IP
使用爬虫时,大部分网站都有一定的反爬措施,有些网站会限制每个 IP 的访问速度或访问次数,超出了它的限制你的 IP 就会被封掉.对于访问速度的处理比较简单,只要间隔一段时间爬取一次就行了,避免频繁访问 ...
- Python搭建代理IP池(三)- 检测 IP
在获取 IP 时,已经成功将各个网站的代理 IP 获取下来了,然后就需要一个检测模块来对所有的代理进行一轮轮的检测,检测可用就设置为满分,不可用分数就减 1,这样就可以实时改变每个代理的可用情况,在获 ...
- pythonrequests代理ip_python使用requests模块使用ip代理池
import json import telnetlib import requests import random # 代理ip列表 proxy_url = "https://raw.gi ...
- Python搭建代理IP池(二)- 存储 IP
上一文写了如何从代理服务网站提取 IP,本文就讲解如何存储 IP,毕竟代理池还是要有一定量的 IP 数量才行.存储的方式有很多,直接一点的可以放在一个文本文件中,但操作起来不太灵活,而我选择的是 My ...
- pythonscrapy爬虫_零基础写python爬虫之使用Scrapy框架编写爬虫
网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据.虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间.Scrapy是一个使用Python编写的,轻 ...
- dubbo源码深度解析_scrapy框架通用爬虫、深度爬虫、分布式爬虫、分布式深度爬虫,源码解析及应用
scrapy框架是爬虫界最为强大的框架,没有之一,它的强大在于它的高可扩展性和低耦合,使使用者能够轻松的实现更改和补充. 其中内置三种爬虫主程序模板,scrapy.Spider.RedisSpider ...
- 从0到1爬虫学习笔记:04Scrapy框架
文章目录 1 Scrapy概述 1.1 Scrapy架构图 1.2 Scrapy开发步骤 2 入门案例 2.1 学习目标 2.2 新建项目(scrapy startproject) 2.3 明确目标( ...
最新文章
- linux sftp权限设置,Linux设置SFTP服务用户目录权限
- ssm启动报错cannot find class_SSM整合补充 RBAC(权限控制)过滤器
- 微信小程序实时获取用户经纬度
- python和R对dataframe的单列数据进行统计:value_counts、table、unique、nunique、min、max、mean、sort、length、var、quantile、
- CION AP192主控量产低格工具v3.35
- SAP Spartacus category navigation按钮之间的间隔问题
- oracle 10g 关库,Oracle Db10g 启动和关闭数据库
- 女生适合学ux吗_UX设计色彩心理学,理论与可访问性
- 实体零售全渠道及数字化发展报告(2020)
- dsp 有fft程序吗_Python 中 FFT 快速傅里叶分析
- java里面的内存机制_Stack vs. Heap:了解 Java 的内存分配机制
- csdn中下载资源入口查找
- matlab gui中断程序,MATLAB GUI的中斷程序
- 瀑布流插件masonry
- app对于接口返回数据的容错测试(健壮性测试)
- autojs左右滑动脚本代码_Swiper.js实现移动端元素左右滑动
- mtk android 多媒体架构,MTK6739核心板
- ticker定时器用法
- 微信公众号页面中监听手机“返回”,并回到公众号里
- 使用echarts将Excel的数据可视化
热门文章
- 【Hexo搭建个人博客】:yilia主题配置(二) - 背景图片
- 北京邮电大学计算机学院考研调剂,2020考研调剂信息:北京邮电大学计算机学院招生信息...
- Android 汉字转拼音工具类
- 导出Excel支持锁定表头
- android 投屏代码,android投屏技术:控制设备源码分析
- 手机的尺寸、分辨率、像素密度的关系
- AI换脸,流行一阵儿了;其中原理你一定也明白!
- word“您的组织策略阻止我们为您完成此操作”解决记录
- python模拟ios点击_使用Xcode + Python进行IOS运动轨迹模拟
- Hearbeat + Nginx 安装配置