在Scrapy中使用IP池或用户代理(python3)
一、创建Scrapy工程
scrapy startproject 工程名
二、进入工程目录,根据爬虫模板生成爬虫文件
scrapy genspider -l # 查看可用模板
scrapy genspider -t 模板名 爬虫文件名 允许的域名
三、定义爬取关注的数据(items.py文件)
四、编写爬虫文件
五、设置IP池或用户代理
(1)设置IP池
步骤1:在settings.py文件中添加代理服务器的IP信息,如:
# 设置IP池
IPPOOL = [
{"ipaddr": "221.230.72.165:80"},
{"ipaddr": "175.154.50.162:8118"},
{"ipaddr": "111.155.116.212:8123"}
]
步骤2:创建下载中间文件middlewares.py(与settings.py同一个目录),如:
#创建方法,cmd命令行,如项目为modetest,
E:\workspace\PyCharm\codeSpace\modetest\modetest>echo #middlewares.py
# -*- coding: utf- -*-
# 导入随机模块
import random
# 导入settings文件中的IPPOOL
from .settings import IPPOOL
# 导入官方文档对应的HttpProxyMiddleware
from scrapy.contrib.downloadermiddleware.httpproxy import HttpProxyMiddleware class IPPOOlS(HttpProxyMiddleware):
# 初始化
def __init__(self, ip=''):
self.ip = ip # 请求处理
def process_request(self, request, spider):
# 先随机选择一个IP
thisip = random.choice(IPPOOL)
print("当前使用IP是:"+ thisip["ipaddr"])
request.meta["proxy"] = "http://"+thisip["ipaddr"]
步骤3:在settings.py中配置下载中间件
# 配置下载中间件的连接信息
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':,
'modetest.middlewares.IPPOOlS' :
}
(2)设置用户代理
步骤1:在settings.py文件中添加用户代理池的信息(配置几个浏览器'User-Agent'),如:
# 设置用户代理池
UPPOOL = [
"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"
]
步骤2:创建下载中间文件uamid.py(与settings.py同一个目录),如:
#创建方法,cmd命令行,如项目为modetest,
E:\workspace\PyCharm\codeSpace\modetest\modetest>echo #uamind.py
# -*- coding: utf- -*-#
# 导入随机模块
import random
# 导入settings文件中的UPPOOL
from .settings import UPPOOL
# 导入官方文档对应的HttpProxyMiddleware
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware class Uamid(UserAgentMiddleware):
# 初始化 注意一定要user_agent,不然容易报错
def __init__(self, user_agent=''):
self.user_agent = user_agent # 请求处理
def process_request(self, request, spider):
# 先随机选择一个用户代理
thisua = random.choice(UPPOOL)
print("当前使用User-Agent是:"+thisua)
request.headers.setdefault('User-Agent',thisua)
步骤3:在settings.py中配置下载中间件
# 配置下载中间件的连接信息
DOWNLOADER_MIDDLEWARES = {
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': ,
4 'modetest.uamid.Uamid':
}
总而言之,有时候避免不了配置这类信息,所以直接在settings中都一起配置了如下,直接粘贴到settings.py文件的最后面
#======================================== # 设置IP池和用户代理 # 禁止本地Cookie
COOKIES_ENABLED = False # 设置IP池
IPPOOL = [
{"ipaddr": "221.230.72.165:80"},
{"ipaddr": "175.154.50.162:8118"},
{"ipaddr": "111.155.116.212:8123"}
] # 设置用户代理池
UPPOOL = [
"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393"
] # 配置下载中间件的连接信息
DOWNLOADER_MIDDLEWARES = {
#'scrapy.contrib.downloadermiddlewares.httpproxy.HttpProxyMiddleware':123,
#'modetest.middlewares.IPPOOlS' : 125,
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': 2,
'modetest.uamid.Uamid': 1
} #============================================
在Scrapy中使用IP池或用户代理(python3)的更多相关文章
- 在Scrapy中使用IP池或用户代理更新版(python3)
middlewares.py # -*- coding: utf-8 -*- # 导入随机模块 import random # 导入有关IP池有关的模块 from scrapy.downloaderm ...
- scrapy中使用 IP 代理
在 scrapy 中使用 ip 代理需要借助中间件的功能 首先在settings 中设置好中间件,中间件优先级数字越小越先被执行 , } 然后编写中间件,拦截请求设置代理 class ProxyMid ...
- 封装IP池和用户代理相应的类(python3)
一.middlewares.py源代码: # -*- coding: utf-8 -*- # 导入随机模块 import random # 导入有关IP池有关的模块 from scrapy.contr ...
- Scrapy中的UA池,代理池,以及selenium的应用
UA池 代理池 selenium在Scrapy中的应用 UA池 - 下载中间件: - 下载中间件(Downloader Middlewares) 位于scrapy引擎和下载器之间的一层组件. - 作用 ...
- 如何优雅的在scrapy中使用selenium —— 在scrapy中实现浏览器池
1 使用 scrapy 做采集实在是爽,但是遇到网站反爬措施做的比较好的就让人头大了.除了硬着头皮上以外,还可以使用爬虫利器 selenium,selenium 因其良好的模拟能力成为爬虫爱(cai) ...
- python框架Scrapy中crawlSpider的使用——爬取内容写进MySQL
一.先在MySQL中创建test数据库,和相应的site数据表 二.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo4 三.进入 ...
- scrapy 使用代理ip
1.在settings文件中添加ip池 IPPOOL=['xxx.xx.xx.xx','xxx.xx.xxx.xx'] 2.在middleware文件中添加自己的代理ip类(首先需要导入ipPOOL, ...
- python框架Scrapy中crawlSpider的使用
一.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo3 二.进入工程目录,根据爬虫模板生成爬虫文件 #scrapy genspi ...
- 建立爬虫代理IP池
单线程构建爬虫代理IP池 #!/usr/bin/python3.5 # -*- coding:utf-8 -*- import time import tempfile from lxml impor ...
随机推荐
- EF 表联合查询 join
有两张表m_Dept.m_User,联合查询 linq方式.EF方式 private void Add() { List<m_Dept> lst = new List<m_Dept& ...
- 【VBA研究】利用DateAdd函数取上月或上年同期的日期
作者:iamlaosong DateAdd函数返回一个日期.这一日期加上了一个时间间隔.通过这个函数能够计算非常多我们须要的日期,比方上月上年同期日期等. 语法 DateAdd(interval, n ...
- 把一个base64编码的图片绘制到canvas (canvas的图片在转成dataurl)
把一个base64编码的图片绘制到canvas 需要引入jquery. <canvas id="myCanvas" width="800" height= ...
- unity, editable mesh
一,需求 从fbx载入的模型是不可以在unity里编辑的. 我有一人特殊的需求就是想在unity里为mesh的各顶点K动画. 于是需要自己实现一个可编辑(其实只是顶点可以拖动)的mesh. 二,思路 ...
- atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本
atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本 1. 去除边框思路原理 1 2. Thumbnailator 是一个用来生成图像缩略图.裁切. ...
- [elk]logstash的grok匹配逻辑grok+date+mutate
重点参考: http://blog.csdn.net/qq1032355091/article/details/52953837 logstash的精髓: grok插件原理 date插件原理 kv插件 ...
- phpMyAdmin安装教程
phpMyAdmin安装教程: 解压:将下载文件解压缩到 WEB 访问路径下.文件目录如phpmyadmin. 配置文件:然后配置目录下libraries文件下的 config.default.php ...
- windows下安装C语言环境
安装 1.下载 min-gw 安装程序,链接为:http://sourceforge.net/projects/mingw/files/,下载 Download mingw-get-setup.exe ...
- Reveal使用教程
Reveal使用教程 Reveal是用于透视程序整体结构的一个软件,软件收费89美刀,试用期30天,不过好在有破解版,无需担心花钱的问题 在然后呢,软件在哪下,可以在我的github上下载到破解版本 ...
- Window 窗口类
窗口类 WNDCLASS 总结 总结为下面的几个问题: . 什么是窗口类 . 窗口类的三种类型 . 窗口类各字段含义 . 窗口类的注册和注销 . 如何使用窗口类,子类化.超类化是什么 下面分别描述: ...