Scrapy 笔记(三)
2024-09-02 21:55:27
摘抄自Python
一、随机user-agent 的设置
关于配置和代码
这里我找了一个之前写好的爬虫,然后实现随机更换User-Agent,在settings配置文件如下:
DOWNLOADER_MIDDLEWARES = {
'jobboleSpider.middlewares.RandomUserAgentMiddleware': 543,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
} RANDOM_UA_TYPE= 'random'
这里我们要将系统的UserAgent中间件设置为None,这样就不会启用,否则默认系统的这个中间会被启用
定义RANDOM_UA_TYPE这个是设置一个默认的值,如果这里不设置我们会在代码中进行设置,在middleares.py中添加如下代码:
class RandomUserAgentMiddleware(object):
'''
随机更换User-Agent
'''
def __init__(self,crawler):
super(RandomUserAgentMiddleware, self).__init__()
self.ua = UserAgent()
self.ua_type = crawler.settings.get('RANDOM_UA_TYPE','random') @classmethod
def from_crawler(cls,crawler):
return cls(crawler) def process_request(self,request,spider): def get_ua():
return getattr(self.ua,self.ua_type)
request.headers.setdefault('User-Agent',get_ua())
上述代码的一个简单分析描述:
1. 通过crawler.settings.get来获取配置文件中的配置,如果没有配置则默认是random,如果配置了ie或者chrome等就会获取到相应的配置
2. 在process_request方法中我们嵌套了一个get_ua方法,get_ua其实就是为了执行ua.ua_type,但是这里无法使用self.ua.self.us_type,所以利用了getattr方法来直接获取,最后通过request.heasers.setdefault来设置User-Agent
通过上面的配置我们就实现了每次请求随机更换User-Agent
最新文章
- 基于mini2440的Tslib的移植
- 对于for的一些认识
- easyui datagrid 多行删除问题
- grunt 执行
- 使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法
- 关于Team Leader
- 如何用C程序简单演奏乐曲
- Android Studio新手全然指引
- mssql中得到当天数据的语句
- 经验36--C#无名(大事,物...)
- Python实现字典的key和values的交换
- .NET西安社区 [拥抱开源,又见 .NET] 第二次活动简报
- java命令--jstat 工具使用
- SQL中IN和EXISTS用法的区别
- 解决idea控制台乱码及项目乱码
- 【题解】 bzoj2115: [Wc2011] Xor (线性基+dfs)
- Python爬虫学习系列教程
- YAML 语言教程(转载)
- linux中C语言发送广播报文
- 2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)
热门文章
- 「Linux+Django」uwsgi服务启动(start)停止(stop)重新装载(reload)
- jinja2 中的 Template 批量替换json字符串中的内容
- 利用Zynq Soc创建一个嵌入式工程
- 前端PHP入门-011-可变函数
- OpenCV---色彩空间(一)
- Spring Boot 使用IntelliJ IDEA创建一个web开发实例(二)
- ① 设计模式的艺术-07.适配器(Adapter)模式
- 微信小程序开发(二)创建小程序
- select多选框
- CodeForces - 1015D