scrapy之setting文件详解

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

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.rhkb.cn/news/430862.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Redis][Hash]详细讲解

目录 0.前言1.常见命令1.HSET2.HGET3.HEXISTS4.HDEL5.HKEYS6.HVALS7.HGETALL8.HMGET9.HLEN10.HSETNX11.HINCRBY12.HINCRBYFLOAT 2.内部编码1.ziplist(压缩链表)2.hashtable(哈希表) 3.使用场景4.缓存方式对比1.原⽣字符串类型2.序列化字符串类型3.哈希类型 0.前言 在Redis中&am…

同一网络下两台电脑IP一样吗?探究局域网内的IP分配机制

在日常生活和工作中,我们经常会在同一网络环境下使用多台电脑。这时,一个常见的问题就会浮现:同一网络下两台电脑IP一样吗?这个问题看似简单,但实际上涉及到局域网内的IP分配机制。本文将深入探讨这一问题,…

Linux使用Clash,clash-for-linux

文件下载 clash-for-linuxhttps://link.zhihu.com/?targethttps%3A//zywang.lanzn.com/ijE2a1m7h6mb(百度和阿里云盘都不支持这个文件分享)。 使用须知 - 此项目不提供任何订阅信息,请自行准备Clash订阅地址。 - 运行前请手动更改.env文件…

使用四叉树碰撞的游戏 显微镜RPG

实现四叉树碰撞检测 //author bilibili 民用级脑的研发记录 // 开发环境 小熊猫c 2.25.1 raylib 版本 4.5 // 2024-7-14 // AABB 碰撞检测 在拖拽,绘制,放大缩小中 // 2024-7-20 // 直线改每帧打印一个点,生长的直线,直线炮弹 /…

The NCCoE’s Automation of the CMVP

Earlier today at the ICMC24, we heard from a panel about the US National Cybersecurity Center of Excellence’s (NCCoE) work on the Automated Cryptographic Module Validation Program (ACMVP), which intends to tackle the troublingly long queue times we’ve se…

Flink 与 Kubernetes (K8s)、YARN 和 Mesos集成对比

Flink 与 Kubernetes (K8s)、YARN 和 Mesos 的紧密集成,是 Flink 能够在不同分布式环境中高效运行的关键特性。 Flink 提供了与这些资源管理系统的深度集成,以便在多种集群管理环境下提交、运行和管理 Flink 作业。Flink 与 K8s、YARN 和 Mesos 集成的详…

百度Android IM SDK组件能力建设及应用

作者 | 星途 导读 移动互联网时代,随着社交媒体、移动支付、线上购物等行业的快速发展,对即时通讯功能的需求不断增加。对于各APP而言,接入IM SDK(即时通讯软件开发工具包)能够大大降低开发成本、提高开发效率&#…

数据结构:(OJ141)环形列表

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(…

C++ | Leetcode C++题解之第420题强密码检验器

题目: 题解: class Solution { public:int strongPasswordChecker(string password) {int n password.size();bool has_lower false, has_upper false, has_digit false;for (char ch: password) {if (islower(ch)) {has_lower true;}else if (isu…

渗透测试综合靶场 DC-2 通关详解

一、准备阶段 准备工具如Kali Linux,下载并设置DC-2靶场机。确保攻击机和靶机在同一网络段,通常设置为桥接模式或NAT模式。 1.1 靶机描述 Much like DC-1, DC-2 is another purposely built vulnerable lab for the purpose of gaining experience in …

面试知识点总结篇二

一、makefile链接库参数 LIBS -L/path/to/lib -lmylib//,-lmylib会链接名为libmylib.so或libmylib.a的库。all: myprogrammyprogram: myprogram.ogcc -o myprogram myprogram.o $(LIBS)//此处使用myprogram.o: myprogram.cgcc -c myprogram.c二、shell指令 Shell…

高性能分布式搜索引擎Elasticsearch详解

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

在线相亲交友系统:寻找另一半的新方式

在这个快节奏的时代里,越来越多的单身男女发现,传统意义上的相亲方式已经难以满足他们的需求。与此同时,互联网技术的迅猛发展为人们提供了新的社交渠道——在线相亲交友系统作者h17711347205。本文将探讨在线相亲交友系统如何成为一种寻找另…

MYSQL基础语法

1-什么是数据库 数据库就是保留数据的仓库,体现在电脑当中,是一个软件或者是文件系统。然后把这些数据都保存在特殊的文件中,然后使用固定的语言(SQL语句)去操作文件中的数据。 2-数据库的优点 数据库是按照特定的格…

Spring MVC 基本配置步骤 总结

1.简介 本文记录Spring MVC基本项目拉起配置步骤。 2.步骤 在pom.xml中导入依赖&#xff1a; <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.6</version><scope>…

Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全

冲冲冲&#xff01;开干 这篇文章将分为九个篇章&#xff0c;带你逐步掌握工作流的核心知识。“破气式”&#xff0c;代表着工作流中的 无形之力&#xff0c;它是贯穿整个流程的 关键驱动 不知不觉已经到了独孤九剑最后一式了&#xff0c;我相信到这里之后各位都已经出神入化…

成功使用DDNS动态域名访问我的群晖NAS(TP-link路由器)

当NAS设备部署在动态IP环境中&#xff08;如家庭或小型办公室宽带&#xff09;&#xff0c;远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题&#xff0c;结合神卓互联NAS公网助手提供的DDNS&#xff08;动态域名服务&#xff09;功能&#xff0c;我们可以轻松实现通过…

EasyGBD国标GB28181设备端,支持GB28181-2016、GB28181-2022

功能概要&#xff1a; 功能概述&#xff1a;EasyGBD是GB/T28181 Device的简称&#xff0c;指国标GB28181协议的设备端。EasyGBD功能组件支持Windows、Linux、Android、iOS、ARM等所有平台&#xff0c;可兼容国标GB28181-2011、GB28181-2016的全部功能。 操作系统&#xff1a;任…

医院监护病房智慧ICU远程探视双向对讲为医院带来什么?

随着信息技术的进步和社会对医疗服务要求的不断提高&#xff0c;医院在努力提升服务质量的同时&#xff0c;也在积极寻求更科学有效的管理手段。全视通智慧医院解决方案下有十几个业务系统&#xff0c;主要专注于医院信息化系统&#xff0c;针对于智慧门诊、智慧病房、智慧手术…

玩转腾讯混元大模型——带您解读各个功能

自从2022年的OpenAI公司推出chatGPT人工智能聊天机器人&#xff0c;从此人工智能大模型便在各国可所谓风靡一时&#xff0c;不断涌现出各种各样的大模型&#xff0c;深得用户喜爱。然而在此领域中&#xff0c;腾讯也研发出了自己的大语言模型&#xff0c;下面我们一起来了解一下…