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中几个常用的类方法
Apr 08 Python
Django实现的自定义访问日志模块示例
Jun 23 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
python Django中models进行模糊查询的示例
Jul 18 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
python yield和Generator函数用法详解
Feb 10 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
python求前n个阶乘的和实例
Apr 02 Python
Python txt文件如何转换成字典
Nov 03 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
python爬虫之爬取笔趣阁小说
Apr 22 Python
使用Python的开发框架Brownie部署以太坊智能合约
May 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
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
PHP字符串 ==比较运算符的副作用
2009/10/21 PHP
php URL验证正则表达式
2011/07/19 PHP
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
php的debug相关函数用法示例
2016/07/11 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
python使用mailbox打印电子邮件的方法
2015/04/30 Python
Python注释详解
2016/06/01 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
Python中bisect的使用方法
2019/12/31 Python
Python语言异常处理测试过程解析
2020/01/08 Python
卫生巾广告词
2014/03/18 职场文书
任命书怎么写
2014/06/04 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
运动会开幕式主持词
2015/07/01 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL