scrapy实践之settings的配置

2020-11-25 11:15:12 浏览数 (1)

在scrapy创建的爬虫项目中,包括了以下4个基本文件

1. items.py

2. middlewares.py

3. pipelines.py

4. settings.py

items定义了需要从网页中提取的结构化信息,middlewares称之为中间价,用于对request和response请求进行封装,pipelines用于对item近一步处理,比如去重等操作,而settings则用于设置各种信息。

对于settings.py,通常由以下3种使用场景

1. 启动自定义配置

middlewares和pipelines中定义的各种元素,都需要在settings中进行设置之后,才可以启动,以下载中间件为例,配置如下

代码语言:javascript复制
DOWNLOADER_MIDDLEWARES = {
   'hello_world.middlewares.UserAgentMiddleware': 543,
   'hello_world.middlewares.SeleniumMiddleware': 600,
}

包括item pipelines, download/spider middlewares等各种元件,都需要在这里进行配置。

2. 修改系统配置

scrapy中内置了很多的系统配置,我们可以在settings.py中对其进行修改,比如修改默认的request headers, 用法如下

代码语言:javascript复制
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
}

系统配置很多,可以根据需要进行设置。

3. 自定义信息

对于自定义的常量,可以在settiings中进行设置,方便全局使用,比如定义如下的用户代理池

代码语言:javascript复制
UA_POOL = [
'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/31.0.842.0 Safari/535.2',
'Mozilla/5.0 (Windows NT 5.2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/32.0.813.0 Safari/535.1'
'Mozilla/5.0 (Windows 95) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/43.0.887.0 Safari/533.2'
'Mozilla/5.0 (Windows NT 5.0) AppleWebKit/536.0 (KHTML, like Gecko) Chrome/34.0.885.0 Safari/536.0',
]

定义之后,在下载中间件中,可以通过如下方式来使用

代码语言:javascript复制
class UserAgentMiddleware(object):

    def process_request(self, request, spider):
        request.headers['User-Agent'] = random.choice(spider.settings['UA_POOL'])

通过类似字典的方式来访问settings.py中定义的系统常量。熟练掌握settings的配置功能,是玩转scrapy框架的基础。

·end·

—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。

0 人点赞