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在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 Python
利用Python如何生成随机密码
Apr 20 Python
python一键升级所有pip package的方法
Jan 16 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
Python操作redis和mongoDB的方法
Dec 19 Python
python3中使用__slots__限定实例属性操作分析
Feb 14 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 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应用JSON技巧讲解
2013/02/03 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
Javascript 学习书 推荐
2009/06/13 Javascript
JavaScript 高效运行代码分析
2010/03/18 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
javascript折半查找详解
2015/01/26 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
JS实现的自定义map方法示例
2019/05/17 Javascript
javascript实现留言板功能
2020/02/08 Javascript
如何运行Python程序的方法
2013/04/21 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
Python算法中的时间复杂度问题
2019/11/19 Python
基于Python绘制个人足迹地图
2020/06/01 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
2014/10/20 HTML / CSS
html5中 media(播放器)的api使用指南
2014/12/26 HTML / CSS
工程造价专业大学生职业规划范文
2014/03/09 职场文书
旅游市场营销方案
2014/03/09 职场文书
创建文明城市标语
2014/06/16 职场文书
九华山导游词
2015/02/03 职场文书
捐款通知怎么写
2015/04/24 职场文书
2015年库房工作总结
2015/04/30 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python