scrapy之setting文件详解

news2024/9/21 23:36:45

一、使用项目配置文件的好处

1. 集中管理配置
配置文件将各种设定集中管理,避免了在代码中散布配置参数。这使得开发人员能够方便地找到并修改全局参数,不必在代码的各个部分寻找。

2. 提升代码可维护性
配置文件将程序逻辑与具体的配置解耦,使代码更易于维护。开发人员可以专注于实现功能,而无需频繁修改代码中嵌入的硬编码参数。

3. 便于环境切换
不同的环境(如开发、测试、生产)往往需要不同的配置。通过配置文件,开发者可以轻松地为不同环境提供不同的设置,例如数据库连接信息、日志级别、调度策略等。Scrapy 的 settings.py 就支持通过命令行指定配置文件,适应不同场景。

4. 提高复用性和灵活性
配置文件可以被多次复用。对于需要在多个项目或模块间共享的配置,只需要维护一个配置文件,而不必每次手动配置。Scrapy 支持用户通过 settings.py 配置爬取延迟、下载中间件、爬虫等参数,使得框架的使用更灵活。

5. 安全性
通过将敏感信息如 API 密钥、数据库凭证等存储在单独的配置文件中,开发者可以在发布时轻松忽略这些文件,不将其暴露到版本控制系统中,增强安全性。

6. 支持动态加载配置
Scrapy 允许在运行时通过 settings.py 文件动态调整某些配置,比如请求的并发数、用户代理等,使得爬虫能够根据实际需求灵活调整,而无需重启或修改源代码。

7. 简化团队协作
团队成员可以通过配置文件快速了解整个项目的设置,统一参数的使用标准,减少了由于个别成员使用不同配置而引发的问题。Scrapy 的 settings.py 清晰地列出爬虫行为的各个配置项,有助于团队之间的合作。

二、scrapy的setting.py

# Scrapy settings for douban project
# 
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
# 
#     https://docs.scrapy.org/en/latest/topics/settings.html
#     https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://docs.scrapy.org/en/latest/topics/spider-middleware.html

在较为项目复杂或者是想要了解更多的信息可以到官网查看官方文档,包含setting、middleware等。

BOT_NAME = "douban"

SPIDER_MODULES = ["douban.spiders"]
NEWSPIDER_MODULE = "douban.spiders"

BOT_NAME 就是项目名,MODULES就是一个包含所有scrapy项目的列表。

# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = "douban (+http://www.yourdomain.com)"

Crawl responsibly by identifying yourself:进行爬取时要“负责任”,明确表明你的身份。这意味着在进行网络爬取时,不要伪装成其他浏览器,而应明确声明爬虫的身份,尊重网站的使用条款。
(and your website):这里提到的“你的网站”是指,如果你的爬虫有对应的官方网站,可以在 User-Agent 中附上该网站的 URL。这样网站管理员可以追踪到爬虫来源并联系你,以防爬虫对服务器造成负面影响。

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

是否遵守君子协议,就是先访问对方网站的robots.txt,明确哪些东西可以爬,哪些东西不能爬。懂得都懂。

# Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32

并发请求指的是爬虫在同一时间内可以同时发出的请求数。也就是说,爬虫可以在一个时刻与多个服务器或页面进行交互,而不是每次完成一个请求后再开始下一个请求。
Scrapy 默认的最大并发请求数为 16。这意味着在默认情况下,Scrapy 会同时发出最多 16 个请求。可以修改 CONCURRENT_REQUESTS 的值。注释中的例子给出的是 32,也就是最多可以同时发出 32 个请求。

# Configure a delay for requests for the same website (default: 0)
# See https://docs.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
#DOWNLOAD_DELAY = 3
# The download delay setting will honor only one of:
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16

请求延迟是指在同一个网站上的连续请求之间设置的等待时间。也就是说,Scrapy 在向同一网站发送多个请求时,会在每次请求之间暂停一段时间,以避免对目标网站造成压力,模拟类似人类用户的行为。默认情况下,这个延迟为 0 秒,也就是说 Scrapy 在同一个网站上的请求是没有等待时间的,可以立即连续发送。AutoThrottle 设置,可以根据目标网站的负载动态调整请求速度。通过设置DOWNLOAD_DELAY来进行控制。

CONCURRENT_REQUESTS_PER_DOMAIN:该选项用于设置每个域名的最大并发请求数。如果设置为 16,则 Scrapy 对某一个域名的同时并发请求不会超过 16 个。这个配置项允许你控制对每个域名发出的请求数量,避免对某个特定域名过度爬取。
CONCURRENT_REQUESTS_PER_IP:该选项用于设置每个 IP 地址的最大并发请求数。如果 Scrapy 通过代理发送请求,可以根据目标网站的 IP 地址限制并发请求数。比如,如果某些网站有多个域名但同一个 IP 地址,你可以通过这个配置来限制并发请求

# Disable cookies (enabled by default)
#COOKIES_ENABLED = False

Cookies 是服务器发送给客户端的少量数据,存储在客户端的浏览器中,通常用于会话管理、用户跟踪和个性化设置。当客户端访问同一网站时,浏览器会携带相应的 Cookie 发送请求,服务器根据这些 Cookies 可以识别用户的身份或保存的状态信息。
Disable cookies (enabled by default):意思是 "禁用 Cookies(默认情况下是启用的)"。Scrapy 默认情况下会启用 Cookies 处理,这意味着每个请求都会携带 Cookies 信息,这对某些依赖 Cookies 的网站至关重要。
启用 Cookies 的情况:
保持会话状态:某些网站使用 Cookies 进行会话管理,比如用户登录、购物车、用户偏好设置等。如果爬虫需要访问这些页面,必须启用 Cookies 才能保持与服务器的连续会话状态。
访问受限制的内容:一些网站只有登录后才能访问部分内容,启用 Cookies 可以保存登录状态,从而访问这些内容。
禁用 Cookies 的情况:
减少网络开销:如果目标网站不依赖 Cookies 或者对 Cookies 处理无需求,禁用它可以减少网络开销,提升爬取效率。
防止跟踪:网站可以通过 Cookies 追踪客户端的行为,禁用 Cookies 可以避免被追踪到爬虫的访问模式。
避免干扰:有些网站通过设置 Cookies 来记录用户的访问行为并相应调整页面,禁用 Cookies 可以防止这些干扰因素,爬虫能够获取到一致的页面内容。

# Disable Telnet Console (enabled by default)
#TELNETCONSOLE_ENABLED = False

 Telnet 控制台是 Scrapy 提供的一个远程调试工具。通过它,你可以在爬虫运行时,实时查看和修改一些参数或状态,比如查看请求队列、修改设置、调试正在运行的代码等。当这个配置项为 True(默认值),Scrapy 启动时会开启 Telnet 控制台,允许你通过 Telnet 客户端连接到爬虫的进程进行调试。

# Override the default request headers:
# DEFAULT_REQUEST_HEADERS = {
# }

配置默认请求头,设置请求头的目的就是为了让目标网站将我们的请求标记为正常浏览器的行为,而不是爬虫程序,设置默认请求头之后每次请求都会带上该请求头,也可以在中间件中进行参数添加等操作。如果爬虫403了,首先看看是不是请求头出了问题。

# Enable or disable spider middlewares
# See https://docs.scrapy.org/en/latest/topics/spider-middleware.html
#SPIDER_MIDDLEWARES = {
#    "douban.middlewares.DoubanSpiderMiddleware": 543,
#}

爬虫中间件是介于引擎和爬虫之间的一种组件,用于对传入和传出的数据(如请求和响应)进行处理。你可以通过自定义中间件来控制 Scrapy 如何处理这些数据流。
键:"douban.middlewares.DoubanSpiderMiddleware" 指定了自定义的中间件的 Python 路径,也就是你自己定义的爬虫中间件类。
值:543 是中间件的优先级,数值越小,优先级越高,越早执行。

# Enable or disable downloader middlewares
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
#DOWNLOADER_MIDDLEWARES = {
#    "douban.middlewares.DoubanDownloaderMiddleware": 543,
#}

下载器中间件(Downloader Middleware)是 Scrapy 框架中位于 Scrapy 引擎 和 下载器 之间的一层组件,负责处理每个 请求 和 响应。它提供了一种机制,让开发者可以对请求和响应进行自定义处理,以满足不同场景下的特殊需求。功能包括请求处理、响应处理、请求重试、请求和响应的统计、绕过网站反爬机制、数据压缩和解压、自定义错误处理和流量控制等。

# Enable or disable extensions
# See https://docs.scrapy.org/en/latest/topics/extensions.html
#EXTENSIONS = {
#    "scrapy.extensions.telnet.TelnetConsole": None,
#}

配置扩展,Scrapy 允许使用扩展功能来增强爬虫的功能,比如监控爬虫的运行状态、提供额外的命令行工具等。

# Configure item pipelines
# See https://docs.scrapy.org/en/latest/topics/item-pipeline.html
#ITEM_PIPELINES = {
#    "douban.pipelines.DoubanPipeline": 300,
#}

项管道是 Scrapy 用于处理爬虫抓取的数据(即 Item)的一个重要组件。它允许开发者定义如何处理抓取到的 Item,例如清洗、验证、存储等。Scrapy 使用一个字典格式来配置项管道。字典的键是管道的路径,值是管道的执行优先级(数字越小优先级越高)。通过 ITEM_PIPELINES 配置,开发者可以定义如何处理抓取到的 Item,包括清理、存储、验证等操作。

# Enable and configure the AutoThrottle extension (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/autothrottle.html
#AUTOTHROTTLE_ENABLED = True
# The initial download delay
#AUTOTHROTTLE_START_DELAY = 5
# The maximum download delay to be set in case of high latencies
#AUTOTHROTTLE_MAX_DELAY = 60
# The average number of requests Scrapy should be sending in parallel to
# each remote server
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
# Enable showing throttling stats for every response received:
#AUTOTHROTTLE_DEBUG = False

AutoThrottle 是 Scrapy 的一个功能,旨在根据服务器的响应时间和负载动态调整请求的下载延迟,从而避免对目标网站造成过大压力。该配置项设定了 Scrapy 开始下载时的初始延迟(单位为秒)。在启用 AutoThrottle 后,初始延迟会影响首次请求的发送时间。
#AUTOTHROTTLE_MAX_DELAY = 60——如果服务器的响应时间较长,AutoThrottle 将会根据该配置设定的最大延迟来调整下载速度。在此例中,最大延迟为 60 秒。AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0——:该配置项设定了 Scrapy 希望并行发送给每个远程服务器的平均请求数。在此例中,设置为 1.0 意味着每次仅发送一个请求。

# Enable and configure HTTP caching (disabled by default)
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
#HTTPCACHE_ENABLED = True
#HTTPCACHE_EXPIRATION_SECS = 0
#HTTPCACHE_DIR = "httpcache"
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = "scrapy.extensions.httpcache.FilesystemCacheStorage"

Scrapy 提供了 HTTP 缓存的功能,允许在爬虫运行时缓存已下载的页面,以避免重复请求同一 URL,从而提高效率和节省带宽。该功能默认是关闭的。#HTTPCACHE_ENABLED = True——这行代码用于启用 HTTP 缓存。如果取消注释并将其设置为 True,Scrapy 将开始缓存 HTTP 响应。默认情况下,此项为 False,表示缓存功能是关闭的。#HTTPCACHE_EXPIRATION_SECS = 0——这是缓存的过期时间设置(以秒为单位)。如果设置为 0,表示缓存永不过期,响应将一直保留在缓存中。开发者可以根据需要调整此值,以控制缓存的有效期,设置为 3600 例如表示缓存有效期为 1 小时。#HTTPCACHE_DIR = "httpcache"——指定缓存存储的目录。默认情况下,Scrapy 将缓存存储在当前工作目录下的 httpcache 文件夹中。如果取消注释,可以自定义此目录,方便管理和访问缓存文件。#HTTPCACHE_IGNORE_HTTP_CODES = []——这是一个列表,用于指定在缓存中应忽略的 HTTP 状态码。例如,如果设置为 [404, 500],那么 Scrapy 在接收到这些状态码的响应时,将不会将其缓存。默认情况下,该列表为空,表示所有状态码都将被缓存。#HTTPCACHE_STORAGE = "scrapy.extensions.httpcache.FilesystemCacheStorage"——这行代码指定了缓存存储的方式。默认情况下,Scrapy 使用文件系统缓存(FilesystemCacheStorage),即将响应缓存存储在文件中。开发者可以根据需要选择不同的存储后端,比如数据库等,只需替换这个值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2153601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习——【4.2】数据容器:tuple元组

文章目录 【4.2】数据容器:tuple元组一、元组的定义格式二、元组的特点三、元组的操作(一)常见操作(二)循环遍历 【4.2】数据容器:tuple元组 一、元组的定义格式 为什么需要元组 列表是可以修改的。如果想…

seL4 Untyped(二)

链接: Untyped Untyped 这篇主要是针对seL4物理内存管理的介绍。 物理内存 在seL4系统中,除了内核占用的一小部分静态内存之外,其他的所有的物理内存都是用户一级管理的。seL4在启动时创建的对象能力,以及seL4管理的其余物理资源&#xf…

初始网络编程(下)

所属专栏:Java学习 1. TCP 的简单示例 同时,由于 TCP 是面向字节流的传输,所以说传输的基本单位是字节,接受发送都是使用的字节流 方法签名 方法说明 Socket accept() 开始监听指定端口(创建时绑定的端口&…

十七、RC振荡电路

振荡电路 1、振荡电路的组成、作用、起振的相位条件以及振荡电路起振和平衡幅度条件, 2、RC电路阻抗与频率、相位与频率的关系曲线; 3、RC振荡电路的相位条件分析和振荡频率

信息安全数学基础(15)欧拉定理

前言 欧拉定理是数论中的一个重要定理,它建立了模运算下指数与模的互质关系。这个定理在密码学、信息安全等领域有着广泛的应用,特别是在公钥密码体制(如RSA加密算法)中。 一、表述 设 n 是一个正整数,a 是一个与 n 互…

Tomcat服务器—Windows下载配置详细教程

一、关于 1.1 简介 Tomcat是一个开源的Java Servlet容器和Web服务器,由Apache软件基金会维护。它实现了Java Servlet和JavaServer Pages (JSP) 规范,用于运行Java Web应用程序。Tomcat支持多种Java EE功能,并提供了高效的性能和可扩展性&am…

Spring扩展点系列-MergedBeanDefinitionPostProcessor

文章目录 简介源码分析示例示例一:Spring中Autowire注解的依赖注入 简介 spring容器中Bean的生命周期内所有可扩展的点的调用顺序 扩展接口 实现接口ApplicationContextlnitializer initialize AbstractApplicationContext refreshe BeanDefinitionRegistryPos…

记录一个英语听力网站的开发

背景 在当前全球经济衰退的背景下,国内IT相关工作的竞争日益激烈。为了获得更多的职业机会,学习英语或许能为程序员打开一扇新的窗户。尤其是在国际化背景的远程工作中,英语协作沟通是必不可少的。 尽管我们大多数人从小到大都在学习英语&a…

使用Renesas R7FA8D1BH (Cortex®-M85)和微信小程序App数据传输

目录 概述 1 系统架构 1.1 系统结构 1.2 系统硬件框架结构 1.3 蓝牙模块介绍 2 微信小程序实现 2.1 UI介绍 2.2 代码实现 3 上位机功能实现 3.1 通信协议 3.2 系统测试 4 下位机功能实现 4.1 功能介绍 4.2 代码实现 4.3 源代码文件 5 测试 5.1 编译和下载代码…

RNN的反向传播

目录 1.RNN网络:通过时间反向传播(through time back propagate TTBP) 2.RNN梯度分析 2.1隐藏状态和输出 2.2正向传播: 2.3反向传播: 2.4问题瓶颈: 3.截断时间步分类: 4.截断策略比较 5.反向传播的细节 ​编辑…

大数据新视界 --大数据大厂之JavaScript在大数据前端展示中的精彩应用

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

浙大数据结构:05-树8 File Transfer

数据结构MOOC PTA习题 这道题考察并查集的操作&#xff0c;合并以及找根结点 机翻&#xff1a; 1、条件准备 node是数组存放1-N结点的根节点的&#xff0c;n为总结点数 #include <iostream> using namespace std;const int N 1e4 5; int node[N]; int n; 先初始化…

众数信科AI智能体政务服务解决方案——寻知智能笔录系统

政务服务解决方案 寻知智能笔录方案 融合民警口供录入与笔录生成需求 2分钟内生成笔录并提醒错漏 助办案人员二次询问 提升笔录质量和效率 寻知智能笔录系统 众数信科AI智能体 产品亮点 分析、理解行业知识和校验规则 AI实时提醒用户文书需注意部分 全文校验格式、内…

【在Linux世界中追寻伟大的One Piece】进程间关系与守护进程

目录 1 -> 进程组 1.1 -> 什么是进程组 1.2 -> 组长进程 2 -> 会话 2.1 -> 什么是会话 2.2 -> 如何创建会话 2.3 -> 会话ID(SID) 3 -> 控制终端 4 -> 作业控制 4.1 -> 什么是作业(job)和作业控制(Job Control) 4.2 -> 作业号 4.3…

Spring:项目中的统一异常处理和自定义异常

介绍异常的处理方式。在项目中&#xff0c;都会进行自定义异常&#xff0c;并且都是需要配合统一结果返回进行使用。 1.背景引入 &#xff08;1&#xff09;背景介绍 为什么要处理异常&#xff1f;如果不处理项目中的异常信息&#xff0c;前端访问我们后端就是显示访问失败的…

20240921在友善之臂的NanoPC-T6开发板上确认宸芯的数传模块CX6602N的AT命令

console:/dev # cat ttyUSB1 & console:/dev # echo AT > ttyUSB1 20240921在友善之臂的NanoPC-T6开发板上确认宸芯的数传模块CX6602N的AT命令 2024/9/21 21:03 【必须】Android12/Linux&#xff08;Buildroot&#xff09;都必须要&#xff01; 4、【Android12默认打开U…

电脑硬件-机械硬盘

简介 机械硬盘是电脑的主要存储媒介之一&#xff0c;通常用于存储一些文件资料或者学习视频笔记等比较大的内容。 结构 采用磁盘存储数据&#xff0c;使用温彻斯特的结构&#xff0c;特有四个特点&#xff1a; 1.磁头、盘片和运动机构安装在一个密封的腔体内。 2.盘片告诉旋…

一图快速看懂flink source的设计实现

文章目录 整体来说多个处理流程是解偶的&#xff0c;这样可以在面对多数据源情况下&#xff0c;能更加的灵活。 下面只展示了&#xff0c;主要的一些流程 下面补充一点&#xff0c;读取文件状态的保存&#xff0c;切分信息用了一个 ListState 来保存。具体要保存的信息&#x…

day2-1 app端文章查看

首先一共三张表 然后大致过程就是三层架构 用mp实现 具体出现的问题 1 测试的时候后端代码启动不了 先在maven clean一下 具体流程 然后执行完之后建议把这三个模块的target文件删除一下再运行 最后的话 如果还是报错 也是正常的 因为后边的东西都没写有些文件没有用到 2…

常见的中间件漏洞

Tomcat CVE-2017-12615 访问主页进行抓包 修改传参方式为put 放包进行连接 后台弱⼝令部署war包 访问主页试用默认账号密码tomcat/tomcat进行登录后 将哥斯拉生成的jsp木马文件压缩城成zip文件&#xff0c;然后再修改zip后缀文war 然后进行上传 使用哥斯拉进行测试连接 CVE-…