一日一技:如何处理配置文件中的重复值?

人工智能2025-11-05 10:15:159

在我们创建配置文件的日技时候,可能会出现一些值需要重复填写多次的何处问题。例如我最近写了一个可配置爬虫,理配只需要配置几条 XPath,置文就能够自动生成一个 Scrapy 爬虫。复值从而快速完成简单网站的日技爬取。

这个配置文件长这样:

name: 某某网站爬虫 host: https://www.kingname.info headers:   user-agent: xxx   host: yyyy   referer: zzz rule:   start_url: https://www.kingname.info   detail_url: //div[@class="xxx"]/a/@href   next_page_xpath: //div[@class="next"]/@href   ...其他配置参数... 

这个配置文件是何处使用 YAML 格式创建的。我们可以看到,理配最外层的置文host的值为https://www.kingname.info,而在rule里面,复值start_url的日技值也是这个网址。这样就重复了。何处这种重复的理配情况还有很多,例如列表页的置文翻页链接的 XPath 与正文页的翻页链接的 XPath 是亿华云计算一样的,多个类型可以具有相同的复值执行规则等等。

如果你使用 JSON 来作为配置文件的格式,那么确实你要重复写。但如果你使用 YAML 来作为配置文件的格式,那么你可以通过添加锚记(anchor)和别名(alias)的方式,实现一次填写,多次使用的效果。

我们先来看一个简单的例子:

import yaml config =  name: &name 青南 salary: 99999 other_name: *name info = yaml.safe_load(config) print(info) 

运行效果如下图所示:

可以看到,原本定义一个key-value类型的值,应该是key: value的形式,但是这里我写成key: &锚记名 value,于是,这个锚记名就相当于是一个变量名,高防服务器就可以在其他地方引用。引用的时候,写作*锚记名。这有点像 C 语言中的获取变量的内存地址(&),然后显示指针的值(*)。锚记名可以 key 相同,也可以不同。

当然,除了简单的key-value,也可以在复杂的场景下使用,例如:

import yaml config =  article_xpath: &article     title: //div[@class="title"]/text()     detail: //div[@class="content"]/text()     image:          - //div/img[@class="xx"]/@href         - //p/img[@class="yy"]/@href about_xpath:     summary: //div[@class="summary"]/text() book_xpath: *article info = yaml.safe_load(config) 

运行效果如下图所示:

这样一来,如果某一项会多次出现的配置发生了修改,我们只需要改一个地方,就能在多个地方同时自动生效,不用再一个一个手动修改了。既节省了时间又不容易出错。

本文转载自微信公众号「未闻Code」,可以通过以下二维码关注。转载本文请联系未闻Code公众号。

云服务器
本文地址:http://www.bzve.cn/news/626b64498729.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

电脑故障引发重启(遇见蓝屏、系统崩溃、硬件问题等,你需要了解的一切)

打造个人数据库(掌握数据管理的基本技巧,构建个性化的数据库系统)

以风控360怎么样——全方位保护您的网络安全(一起了解风控360的功能、特点和用户体验)

电脑硬盘配置教程(了解硬盘的基本知识,轻松配置高性能电脑)

蒙娜丽莎的真实面貌(解读蒙娜丽莎的面容之谜,探究她神秘微笑背后的故事)

手机硬盘芯片数据读取技术的研究与应用(解析手机硬盘芯片数据恢复的关键技术与方法)

以系统盘装XP系统教程(详解XP系统安装步骤和注意事项)

360扫地机器人的优势和功能(体验智能家居的性产品)

友情链接

滇ICP备2023006006号-39