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设计模式中的代理模式与模板方法模式编程
Feb 02 Python
python之Socket网络编程详解
Sep 29 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
Django后台获取前端post上传的文件方法
May 28 Python
python实现猜数字小游戏
Mar 24 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
面向对象学习之pygame坦克大战
Sep 11 Python
解决pycharm同一目录下无法import其他文件
Feb 12 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
javascript HTML+CSS实现经典橙色导航菜单
2016/02/16 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
vue.js 左侧二级菜单显示与隐藏切换的实例代码
2017/05/23 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
python调用java的Webservice示例
2014/03/10 Python
详解Python传入参数的几种方法
2019/05/16 Python
使用python画社交网络图实例代码
2019/07/10 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
python实现超市商品销售管理系统
2019/11/22 Python
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
美国时尚女装在线:Missguided
2016/12/03 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
Java程序员常见面试题
2015/07/16 面试题
初一英语教学反思
2014/01/11 职场文书
巧克力蛋糕店创业计划书
2014/01/14 职场文书
个人作风剖析材料
2014/02/02 职场文书
高中军训感言400字
2014/02/24 职场文书
2015年入党决心书
2015/02/05 职场文书
主持人开场白台词
2015/05/29 职场文书
2019军训心得体会
2019/06/27 职场文书
OpenCV全景图像拼接的实现示例
2021/06/05 Python
Python与C++中梯度方向直方图的实现
2022/03/17 Python