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 连连看连接算法
Nov 22 Python
Python中使用Boolean操作符做真值测试实例
Jan 30 Python
python实现在每个独立进程中运行一个函数的方法
Apr 23 Python
用Python实现web端用户登录和注册功能的教程
Apr 30 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
用pycharm开发django项目示例代码
Oct 24 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
Python标准库itertools的使用方法
Jan 17 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
Django实现聊天机器人
May 31 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中date()日期函数有关参数整理
2011/07/19 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
jQuery 性能优化指南 (1)
2009/05/21 Javascript
JQuery Ajax 跨域访问的解决方案
2010/03/12 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
2018/08/08 jQuery
vant实现购物车功能
2020/06/29 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python 字典(Dictionary)操作详解
2014/03/11 Python
Python中的函数作用域
2018/05/07 Python
python opencv摄像头的简单应用
2019/06/06 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
YUV转为jpg图像的实现
2019/12/09 Python
Python 文件数据读写的具体实现
2020/01/24 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
python可迭代对象去重实例
2020/05/15 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
中专自荐信
2013/10/13 职场文书
先进员工获奖感言
2014/08/14 职场文书
政风行风评议整改方案
2014/09/15 职场文书
刑事代理授权委托书
2014/09/17 职场文书
个人售房合同协议书
2016/03/21 职场文书