成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
在我們創建配置文件的時候,可能會出現一些值需要重復填寫多次的問題。例如我最近寫了一個可配置爬蟲,只需要配置幾條 XPath,就能夠自動生成一個 Scrapy 爬蟲。從而快速完成簡單網站的爬取。

[[374508]]

在我們創建配置文件的時候,可能會出現一些值需要重復填寫多次的問題。例如我最近寫了一個可配置爬蟲,只需要配置幾條 XPath,就能夠自動生成一個 Scrapy 爬蟲。從而快速完成簡單網站的爬取。

這個配置文件長這樣:

  1. name: 某某網站爬蟲 
  2. host: 'https://www.kingname.info' 
  3. headers:  
  4.  user-agent: xxx 
  5.   host: yyyy 
  6.   referer: zzz 
  7. rule
  8.   start_url: 'https://www.kingname.info' 
  9.   detail_url: //div[@class="xxx"]/a/@href 
  10.   next_page_xpath: //div[@class="next"]/@href 
  11.   ...其他配置參數... 

這個配置文件是使用 YAML 格式創建的。我們可以看到,最外層的host的值為https://www.kingname.info,而在rule里面,start_url的值也是這個網址。這樣就重復了。這種重復的情況還有很多,例如列表頁的翻頁鏈接的 XPath 與正文頁的翻頁鏈接的 XPath 是一樣的,多個類型可以具有相同的執行規則等等。

如果你使用 JSON 來作為配置文件的格式,那么確實你要重復寫。但如果你使用 YAML 來作為配置文件的格式,那么你可以通過添加錨記(anchor)和別名(alias)的方式,實現一次填寫,多次使用的效果。

我們先來看一個簡單的例子:

  1. import yaml 
  2.  
  3. config = ''
  4. name: &name 青南 
  5. salary: 99999 
  6. other_name: *name 
  7. ''
  8. info = yaml.safe_load(config) 
  9. print(info) 

運行效果如下圖所示:

可以看到,原本定義一個key-value類型的值,應該是key: value的形式,但是這里我寫成key: &錨記名 value,于是,這個錨記名就相當于是一個變量名,就可以在其他地方引用。引用的時候,寫作*錨記名。這有點像 C 語言中的獲取變量的內存地址(&),然后顯示指針的值(*)。錨記名可以 key 相同,也可以不同。

當然,除了簡單的key-value,也可以在復雜的場景下使用,例如:

  1. import yaml 
  2.  
  3. config = ''
  4. article_xpath: &article 
  5.     title: //div[@class="title"]/text() 
  6.     detail: //div[@class="content"]/text() 
  7.     image:  
  8.         - //div/img[@class="xx"]/@href 
  9.         - //p/img[@class="yy"]/@href 
  10. about_xpath: 
  11.     summary: //div[@class="summary"]/text() 
  12. book_xpath: *article 
  13. ''
  14. info = yaml.safe_load(config) 

運行效果如下圖所示:

這樣一來,如果某一項會多次出現的配置發生了修改,我們只需要改一個地方,就能在多個地方同時自動生效,不用再一個一個手動修改了。既節省了時間又不容易出錯。

本文轉載自微信公眾號「未聞Code」,可以通過以下二維碼關注。轉載本文請聯系未聞Code公眾號。

 

責任編輯:武曉燕 來源: 未聞Code
相關推薦

2022-03-12 20:38:14

網頁Python測試

2021-10-15 21:08:31

PandasExcel對象

2022-06-28 09:31:44

LinuxmacOS系統

2025-05-28 03:15:00

Scrapy數據sleep

2020-12-11 06:30:00

工具分組DataFrame

2021-12-15 22:04:11

瀏覽器重復登錄

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2023-10-28 12:14:35

爬蟲JavaScriptObject

2024-07-30 08:16:18

Python代碼工具

2024-07-30 08:11:16

2024-11-11 00:38:13

Mypy靜態類型

2021-05-08 19:33:51

移除字符零寬

2021-07-27 21:32:57

Python 延遲調用

2022-03-07 09:14:04

Selenium鼠標元素

2021-06-18 05:54:27

MongoDB數據

2021-02-14 22:22:18

格式圖片 HTTP

2021-06-08 21:36:24

PyCharm爬蟲Scrapy

2024-11-13 09:18:09

2021-04-05 14:47:55

Python多線程事件監控

2023-10-29 09:16:49

代碼安全命令
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产午夜精品久久久 | 黄色一级片视频 | 精品欧美乱码久久久久久 | 国产精品国产三级国产aⅴ中文 | 三a毛片 | 91国内视频在线 | 欧美三区视频 | 黄视频网站免费观看 | 久草青青草 | 精品欧美乱码久久久久久 | 中文字幕亚洲视频 | 久久精品一区二区 | 久久爱一区 | 久久精品视频一区二区 | 日韩精品免费视频 | 99九九视频 | 久久小视频 | 福利一区二区在线 | 人人种亚洲 | 国产欧美一区二区在线观看 | 久色视频在线 | 国产清纯白嫩初高生在线播放视频 | h片在线免费看 | 国产毛片毛片 | 福利片在线观看 | www.国产 | 国产午夜视频 | 伦理二区 | 欧美精品一二三区 | 免费在线观看成人av | 久久久久久成人网 | 日本精品一区二区 | 国产一级片在线播放 | 久久免费精品视频 | 一级片免费视频 | www中文字幕 | 日本午夜免费福利视频 | 亚洲天堂999 | 欧美三区视频 | 午夜网站视频 | 色综合天天天天做夜夜夜夜做 |