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 简易计算器程序,代码就几行
Aug 29 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
Python将图片转换为字符画的方法
Jun 16 Python
python中yaml配置文件模块的使用详解
Apr 27 Python
Python基于property实现类的特性操作示例
Jun 15 Python
python图形绘制奥运五环实例讲解
Sep 14 Python
python基于gevent实现并发下载器代码实例
Nov 01 Python
Python实现平行坐标图的绘制(plotly)方式
Nov 22 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
python 实现单例模式的5种方法
Sep 23 Python
Python制作运行进度条的实现效果(代码运行不无聊)
Feb 24 Python
pandas中关于apply+lambda的应用
Feb 28 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
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
JavaScript XML操作 封装类
2009/07/01 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
js中document.write的那点事
2014/12/12 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
Python3+Appium安装使用教程
2019/07/05 Python
tensorflow查看ckpt各节点名称实例
2020/01/21 Python
如何通过命令行进入python
2020/07/06 Python
八项规定整改措施
2014/02/12 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
环保倡议书怎么写
2014/05/16 职场文书
信用卡结清证明怎么写
2014/09/13 职场文书
会计主管竞聘书
2015/09/15 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python