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中字典(Dictionary)用法实例详解
May 30 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
使用Django搭建网站实现商品分页功能
May 22 Python
Python实现Appium端口检测与释放的实现
Dec 31 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
深入解析NumPy中的Broadcasting广播机制
May 30 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
jQuery 开天辟地入门篇一
2009/12/09 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
获取python文件扩展名和文件名方法
2018/02/02 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
django url到views参数传递的实例
2019/07/19 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
学python安装的软件总结
2019/10/12 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
政协会议宣传标语
2014/10/09 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
广告业务员岗位职责
2015/02/13 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书