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中使用Tkinter模块创建GUI程序实例
Jan 14 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 Python
python获取代理IP的实例分享
May 07 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 Python
Python有参函数使用代码实例
Jan 06 Python
pycharm 关掉syntax检查操作
Jun 09 Python
Python APScheduler执行使用方法详解
Dec 10 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
python调试工具Birdseye的使用教程
May 25 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
PHP中的array数组类型分析说明
2010/07/27 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python实现简单的代理服务器
2015/07/25 Python
Python中return语句用法实例分析
2015/08/04 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python中一般处理中文的几种方法
2019/03/06 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
浅谈pytorch池化maxpool2D注意事项
2020/02/18 Python
Python函数生成器原理及使用详解
2020/03/12 Python
jupyter实现重新加载模块
2020/04/16 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
校园门卫岗位职责
2013/12/09 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
工作经历证明范本
2015/06/15 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
linux下安装redis图文详细步骤
2021/12/04 Redis
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技