這篇文章主要講解了“怎么處理配置文件中的重復(fù)值”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么處理配置文件中的重復(fù)值”吧!
作為一家“創(chuàng)意+整合+營銷”的成都網(wǎng)站建設(shè)機構(gòu),我們在業(yè)內(nèi)良好的客戶口碑。成都創(chuàng)新互聯(lián)公司提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計、成都做網(wǎng)站、成都網(wǎng)站設(shè)計、創(chuàng)意表現(xiàn)、網(wǎng)頁制作、系統(tǒng)開發(fā)以及后續(xù)網(wǎng)站營銷運營等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營模式與有效的網(wǎng)絡(luò)營銷方法,創(chuàng)造更大的價值。
在我們創(chuàng)建配置文件的時候,可能會出現(xiàn)一些值需要重復(fù)填寫多次的問題。例如我最近寫了一個可配置爬蟲,只需要配置幾條 XPath,就能夠自動生成一個 Scrapy 爬蟲。從而快速完成簡單網(wǎng)站的爬取。
這個配置文件長這樣:
name: 某某網(wǎng)站爬蟲 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 ...其他配置參數(shù)...
這個配置文件是使用 YAML 格式創(chuàng)建的。我們可以看到,最外層的host的值為https://www.kingname.info,而在rule里面,start_url的值也是這個網(wǎng)址。這樣就重復(fù)了。這種重復(fù)的情況還有很多,例如列表頁的翻頁鏈接的 XPath 與正文頁的翻頁鏈接的 XPath 是一樣的,多個類型可以具有相同的執(zhí)行規(guī)則等等。
如果你使用 JSON 來作為配置文件的格式,那么確實你要重復(fù)寫。但如果你使用 YAML 來作為配置文件的格式,那么你可以通過添加錨記(anchor)和別名(alias)的方式,實現(xiàn)一次填寫,多次使用的效果。
我們先來看一個簡單的例子:
import yaml config = ''' name: &name 青南 salary: 99999 other_name: *name ''' info = yaml.safe_load(config) print(info)
運行效果如下圖所示:
可以看到,原本定義一個key-value類型的值,應(yīng)該是key: value的形式,但是這里我寫成key: &錨記名 value,于是,這個錨記名就相當于是一個變量名,就可以在其他地方引用。引用的時候,寫作*錨記名。這有點像 C 語言中的獲取變量的內(nèi)存地址(&),然后顯示指針的值(*)。錨記名可以 key 相同,也可以不同。
當然,除了簡單的key-value,也可以在復(fù)雜的場景下使用,例如:
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)
運行效果如下圖所示:
這樣一來,如果某一項會多次出現(xiàn)的配置發(fā)生了修改,我們只需要改一個地方,就能在多個地方同時自動生效,不用再一個一個手動修改了。既節(jié)省了時間又不容易出錯。
感謝各位的閱讀,以上就是“怎么處理配置文件中的重復(fù)值”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么處理配置文件中的重復(fù)值這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!