Python使用scrapy采集数据时为每个请求随机分配user-agent的方法


Posted in Python onApril 08, 2015

本文实例讲述了Python使用scrapy采集数据时为每个请求随机分配user-agent的方法。分享给大家供大家参考。具体分析如下:

通过这个方法可以每次请求更换不同的user-agent,防止网站根据user-agent屏蔽scrapy的蜘蛛

首先将下面的代码添加到settings.py文件,替换默认的user-agent处理模块

DOWNLOADER_MIDDLEWARES = {

    'scraper.random_user_agent.RandomUserAgentMiddleware': 400,

      'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,

}

自定义useragent处理模块
from scraper.settings import USER_AGENT_LIST

import random

from scrapy import log

class RandomUserAgentMiddleware(object):

    def process_request(self, request, spider):

        ua  = random.choice(USER_AGENT_LIST)

        if ua:

            request.headers.setdefault('User-Agent', ua)

        #log.msg('>>>> UA %s'%request.headers)

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python原始字符串(raw strings)用法实例
Oct 13 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
Django基础之Model操作步骤(介绍)
May 27 Python
Python  unittest单元测试框架的使用
Sep 08 Python
PyTorch的深度学习入门教程之构建神经网络
Jun 27 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
通过python3实现投票功能代码实例
Sep 26 Python
关于python中plt.hist参数的使用详解
Nov 28 Python
Python 模拟动态产生字母验证码图片功能
Dec 24 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
解决jupyter notebook启动后没有token的坑
Apr 24 Python
python中Genarator函数用法分析
Apr 08 #Python
探索Python3.4中新引入的asyncio模块
Apr 08 #Python
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 #Python
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 #Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 #Python
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 #Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 #Python
You might like
农民C键的运用技巧
2020/03/04 星际争霸
简单谈谈php中ob_flush和flush的区别
2014/11/27 PHP
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python: 自动安装缺失库文件的方法
2018/10/22 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
Python删除n行后的其他行方法
2019/01/28 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
python dataframe NaN处理方式
2019/12/26 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
临床医学专业求职信
2014/08/08 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
服务员岗位职责范本
2015/04/09 职场文书
小孩不笨观后感
2015/06/03 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
学校隐患排查制度
2015/08/05 职场文书
Django中session进行权限管理的使用
2021/07/09 Python
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang