分享

scrapy实践之settings的配置

 生信修炼手册 2020-11-18
在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中进行设置之后,才可以启动,以下载中间件为例,配置如下

DOWNLOADER_MIDDLEWARES = {
   'hello_world.middlewares.UserAgentMiddleware': 543,
   'hello_world.middlewares.SeleniumMiddleware': 600,
}
包括item pipelines, download/spider middlewares等各种元件,都需要在这里进行配置。

2.  修改系统配置

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

DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
}

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

3. 自定义信息

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

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',
]

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

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多