您现在的位置是:亿华云 > 数据库
一日一技:如何处理配置文件中的重复值?
亿华云2025-10-04 01:06:07【数据库】9人已围观
简介在我们创建配置文件的时候,可能会出现一些值需要重复填写多次的问题。例如我最近写了一个可配置爬虫,只需要配置几条 XPath,就能够自动生成一个 Scrapy 爬虫。从而快速完成简单网站的爬取。这个配置
在我们创建配置文件的日技时候,可能会出现一些值需要重复填写多次的何处问题。例如我最近写了一个可配置爬虫,理配只需要配置几条 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公众号。
很赞哦!(8937)
相关文章
- 第六:这个圈子里的域名确实是赚钱的一些大玩家,至于小米农,有多少赚钱?几乎没有,也就是说,轿子里只有一个人,而且大多数人都抬着轿子。
- 边缘计算有望重塑数据中心格局
- 戴尔Latitude 5530 业界首款使用生物基材料的PC
- 新华三重磅发布隐私计算一体机 开启数据安全共享新时代
- 互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。
- 戴尔Latitude 9430轻薄笔记本 可快速识别主人忠实又可靠
- 小心!这个 SSD bug 会使服务器成废砖:永久性故障,数据丢失
- WAIC2022智能流体力学产业联合体成立,以昇腾AI使能科研创新
- 这个不用多说,不同平台的注册价格不同,且不同平台对域名释放交易的把控与曝光不同,当然价格相对便宜且平台渠道广操作便利的平台最好。
- 数据中心基础设施管理(DCIM)主要趋势