一、创建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)的更多相关文章

  1. 在Scrapy中使用IP池或用户代理更新版(python3)

    middlewares.py # -*- coding: utf-8 -*- # 导入随机模块 import random # 导入有关IP池有关的模块 from scrapy.downloaderm ...

  2. scrapy中使用 IP 代理

    在 scrapy 中使用 ip 代理需要借助中间件的功能 首先在settings 中设置好中间件,中间件优先级数字越小越先被执行 , } 然后编写中间件,拦截请求设置代理 class ProxyMid ...

  3. 封装IP池和用户代理相应的类(python3)

    一.middlewares.py源代码: # -*- coding: utf-8 -*- # 导入随机模块 import random # 导入有关IP池有关的模块 from scrapy.contr ...

  4. Scrapy中的UA池,代理池,以及selenium的应用

    UA池 代理池 selenium在Scrapy中的应用 UA池 - 下载中间件: - 下载中间件(Downloader Middlewares) 位于scrapy引擎和下载器之间的一层组件. - 作用 ...

  5. 如何优雅的在scrapy中使用selenium —— 在scrapy中实现浏览器池

    1 使用 scrapy 做采集实在是爽,但是遇到网站反爬措施做的比较好的就让人头大了.除了硬着头皮上以外,还可以使用爬虫利器 selenium,selenium 因其良好的模拟能力成为爬虫爱(cai) ...

  6. python框架Scrapy中crawlSpider的使用——爬取内容写进MySQL

    一.先在MySQL中创建test数据库,和相应的site数据表 二.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo4 三.进入 ...

  7. scrapy 使用代理ip

    1.在settings文件中添加ip池 IPPOOL=['xxx.xx.xx.xx','xxx.xx.xxx.xx'] 2.在middleware文件中添加自己的代理ip类(首先需要导入ipPOOL, ...

  8. python框架Scrapy中crawlSpider的使用

    一.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo3 二.进入工程目录,根据爬虫模板生成爬虫文件 #scrapy genspi ...

  9. 建立爬虫代理IP池

    单线程构建爬虫代理IP池 #!/usr/bin/python3.5 # -*- coding:utf-8 -*- import time import tempfile from lxml impor ...

随机推荐

  1. EF 表联合查询 join

    有两张表m_Dept.m_User,联合查询 linq方式.EF方式 private void Add() { List<m_Dept> lst = new List<m_Dept& ...

  2. 【VBA研究】利用DateAdd函数取上月或上年同期的日期

    作者:iamlaosong DateAdd函数返回一个日期.这一日期加上了一个时间间隔.通过这个函数能够计算非常多我们须要的日期,比方上月上年同期日期等. 语法 DateAdd(interval, n ...

  3. 把一个base64编码的图片绘制到canvas (canvas的图片在转成dataurl)

    把一个base64编码的图片绘制到canvas 需要引入jquery. <canvas id="myCanvas" width="800" height= ...

  4. unity, editable mesh

    一,需求 从fbx载入的模型是不可以在unity里编辑的. 我有一人特殊的需求就是想在unity里为mesh的各顶点K动画. 于是需要自己实现一个可编辑(其实只是顶点可以拖动)的mesh. 二,思路 ...

  5. atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本

    atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本 1. 去除边框思路原理 1 2. Thumbnailator 是一个用来生成图像缩略图.裁切. ...

  6. [elk]logstash的grok匹配逻辑grok+date+mutate

    重点参考: http://blog.csdn.net/qq1032355091/article/details/52953837 logstash的精髓: grok插件原理 date插件原理 kv插件 ...

  7. phpMyAdmin安装教程

    phpMyAdmin安装教程: 解压:将下载文件解压缩到 WEB 访问路径下.文件目录如phpmyadmin. 配置文件:然后配置目录下libraries文件下的 config.default.php ...

  8. windows下安装C语言环境

    安装 1.下载 min-gw 安装程序,链接为:http://sourceforge.net/projects/mingw/files/,下载 Download mingw-get-setup.exe ...

  9. Reveal使用教程

    Reveal使用教程 Reveal是用于透视程序整体结构的一个软件,软件收费89美刀,试用期30天,不过好在有破解版,无需担心花钱的问题​ 在然后呢,软件在哪下,可以在我的github上下载到破解版本 ...

  10. Window 窗口类

    窗口类 WNDCLASS 总结 总结为下面的几个问题: . 什么是窗口类 . 窗口类的三种类型 . 窗口类各字段含义 . 窗口类的注册和注销 . 如何使用窗口类,子类化.超类化是什么 下面分别描述: ...