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 相关文章推荐
剖析Django中模版标签的解析与参数传递
Jul 21 Python
python在每个字符后添加空格的实例
May 07 Python
Python单元测试简单示例
Jul 03 Python
使用pytorch进行图像的顺序读取方法
Jul 27 Python
python判断一个数是否能被另一个整数整除的实例
Dec 12 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
python装饰器的特性原理详解
Dec 25 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
Django-imagekit的使用详解
Jul 06 Python
pyqt5打包成exe可执行文件的方法
May 14 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 无限级分类
2017/05/04 PHP
php语法检查的方法总结
2019/01/21 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
js href的用法
2010/05/13 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python3实现定时任务的四种方式
2019/06/03 Python
python实现根据文件格式分类
2019/10/31 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
全神贯注教学反思
2014/02/03 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
结婚主持人致辞
2015/07/28 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python