scrapy中的useragent与代理ip

方法一:

user-agent我们可以直接在settings.py中更改,如下图,这样修改比较简单,但是并不推荐,更推荐的方法是修改使用scrapy的中间件middlewares.py

推荐方案:

scrapy的中间件可以支持我们在对爬虫的请求进行定制化修改,例如我们为了躲避掉一些反爬虫措施,需要使用随机的useragent以及代理ip。

user-agent中间件的编写:

在middlewares.py文件中编写一个useragent中间件类

class UserAgentDownloadMiddlerware(object):
# 所有的request请求在交给下载器之前,都会经过这个方法
def process_request(self,request,spider):
import random
user_agent_list=[
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36",
"Dalvik/1.6.0 (Linux; U; Android 4.2.1; 2013022 MIUI/JHACNBL30.0)",
"Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; HUAWEI MT7-TL00 Build/HuaweiMT7-TL00) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
"AndroidDownloadManager",
"Apache-HttpClient/UNAVAILABLE (java 1.4)",
"Dalvik/1.6.0 (Linux; U; Android 4.3; SM-N7508V Build/JLS36C)",
"Android50-AndroidPhone-8000-76-0-Statistics-wifi",
"Dalvik/1.6.0 (Linux; U; Android 4.4.4; MI 3 MIUI/V7.2.1.0.KXCCNDA)",
"Dalvik/1.6.0 (Linux; U; Android 4.4.2; Lenovo A3800-d Build/LenovoA3800-d)",
"Lite 1.0 ( http://litesuits.com )",
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727)",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0",
"Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; HTC T528t Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30; 360browser(securitypay,securityinstalled); 360(android,uppayplugin); 360 Aphone Browser (2.0.4)",
]
random_ua = random.choice(user_agent_list)
request.headers['User-Agent'] = random_ua

然后在settings.py文件中开启下载器中间件并修改为自己的中间件

DOWNLOADER_MIDDLEWARES = {
'cnblog_dangdang.middlewares.UserAgentDownloadMiddlerware': 543,
}

如图:

进行测试,看看是否为随机的useragent,测试结果如下:

可以看出我们的随机useragent已经成功。

代理ip中间件的编写:

与useragent中间件相似,代理ip中间件的使用也是先编写自己的ip中间件然后去settings.py中编写使用

在middlewares.py文件中编写一个proxy中间件类

class ProxyDownloadMiddlerware(object):
# 所有的request请求在交给下载器之前,都会经过这个方法
def process_request(self,request,spider):
import random
ip_list = [
"http://27.220.52.237:43289","http://119.176.199.90:9999",
]
random_ip = random.choice(ip_list)
request.meta['proxy'] = random_ip

然后在settings.py文件中开启下载器中间件并修改为自己的中间件

DOWNLOADER_MIDDLEWARES = {
'cnblog_dangdang.middlewares.UserAgentDownloadMiddlerware': 543,
'cnblog_dangdang.middlewares.ProxyDownloadMiddlerware': 543,
}

进行测试,看看是否为随机的代理ip,测试结果如下:

可以看出来我们的中间件已经都起作用了每次都会换新的随机useragent与代理ip。

scrapy的useragent与代理ip的更多相关文章

  1. Scrapy笔记:使用代理ip

    scrapy框架使用代理ip的基本思路是修改请求对象中的meta['proxy']的值,将代理ip赋值给这个属性.遵循这个思路,只要是生成Request对象的地方都可以设置Request的值. dow ...

  2. python爬虫学习(3):使用User-Agent和代理ip

    使用User-Agent方法一,先建立head,作为参数传进去 import urllib.requestimport json content=input("请输入需要翻译的内容:&quo ...

  3. Scrapy集成selenium+PhantomJS+代理IP 解析js动态内容

    转载于:http://blog.aizhet.com/web/16523.html

  4. Scrapy 框架 中间件 代理IP 提高效率

    中间件 拦截请求跟响应 进行ua(User-Agent ) 伪装 代理 IP 中间件位置: 引擎 和下载器 中间 的中间件 ( 下载中间件) 引擎 跟 spider 中间 的中间件 ( 爬虫中间件)( ...

  5. python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)

    python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性) 目录 随机User-Agent 获取代理ip 检测代理ip可用性 随机User-Agent fake_usera ...

  6. Python 爬虫的代理 IP 设置方法汇总

    本文转载自:Python 爬虫的代理 IP 设置方法汇总 https://www.makcyun.top/web_scraping_withpython15.html 需要学习的地方:如何在爬虫中使用 ...

  7. 如何建立自己的代理IP池,减少爬虫被封的几率

    如何建立自己的代理IP池,减少爬虫被封的几率 在爬虫过程中,难免会遇到各种各样的反爬虫,运气不好,还会被对方网站给封了自己的IP,就访问不了对方的网站,爬虫也就凉凉. 代理参数-proxies 首先我 ...

  8. Scrapy中间件user-agent和ip代理使用

    一.定义实现随机User-Agent的下载中间件 1.在middlewares.py中完善代码 import random from Tencent.settings import USER_AGEN ...

  9. scrapy的User-Agent中间件、代理IP中间件、cookies设置、多个爬虫自定义settings设置

    在scrapy的反爬中,常用的几个配置,简单总结了下: User-Agent中间件: from fake_useragent import UserAgent class RandomUserAgen ...

随机推荐

  1. 【WPF学习】第十章 WPF布局示例

    前几章用了相当大的篇幅研究有关WPF布局容器的复杂内容.在掌握了这些基础知识后,就可以研究几个完整的布局示例.通过研究完整的布局示例,可更好的理解各种WPF布局概念在实际窗口中的工作方式. 一.列设置 ...

  2. docker创建mysql容器,并挂载数据+配置

    新建:/my/mysql/my.cnf (准备挂载配置文件用) 将以下内容拷贝进去(或者启动一个docker的mysql,并且把/etc/mysql/my.cnf中的内容拷贝出来) # Copyrig ...

  3. python笔记05

    python笔记05 数据类型 上个笔记知识点总结: 列表中extend特性:extend,(内部循环,将另外一个列表,字符串.元组添加到extend前的列表中) li.extend(s),将s中元素 ...

  4. Linux网络文件共享服务之NFS

    一.NFS服务简介 NFS全称network file system 网络文件系统,基于内核的文件系统,有sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,它基于r ...

  5. Day3-Python3基础-函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1.函数的定义 定义: 函数是指将一组语句的集 ...

  6. H.264原理

    前言 H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的.随着 x264/openh264以及ffmpeg等开源库的推出,大多数使用者无需再对H264的细节做过多的研究,这大降低了人 ...

  7. Git详解之特殊配置与钩子应用

    前言 到目前为止,我阐述了 Git 基本的运作机制和使用方式,介绍了 Git 提供的许多工具来帮助你简单且有效地使用它. 在本章,我将会介绍 Git 的一些重要的配置方法和钩子机制以满足自定义的要求. ...

  8. Activity--Eclipse安装Activity designer插件失败

    案例 今天使用Eclipse 安装Activity designer插件时,出现了如下错误: An error occurred while collecting items to be instal ...

  9. linux系统下gdb的简单调试

    当我们写完程序后,我们会运行程序,在这个过程中,可能程序会出现错误. 我们可以利用gdb调试去看我们运行的程序,并且我们新手通过gdb调试能更好地去读懂 别人的程序.让我们更好的学习. 我们看下面这条 ...

  10. TortoiseSVN的安装及其简单使用

    VisualSVN-Server的安装以及简单使用 TortoiseSVN的安装及其简单使用 VisualSVN的安装及冲突的处理 安装完VisualSVN-Server后,Test仓储里边什么都没有 ...