提取 xml 檔案中的 CDATA 資料
阿新 • • 發佈:2018-12-26
mywang88
2018-12-26
簡介
XML 是常見的資料格式。
解析器往往會忽略 XML 檔案中 <![CDATA[ 資訊 ]]>
區段的內容,但有時我們是需要抓取這些內容的。
搜尋了下這個問題,沒找到較好的回答,自己解決。
本文的開發場景為:
- 程式語言:Python 3.7.0
- 使用了 Scrapy 爬蟲框架的 Selector 類和它的 xpath 選擇器(方法)
- 使用了 requests 庫
方法
總結為一句話:
直接把整個文件中所有 <![CDATA[ 資訊 ]]>
這東西 資訊
簡單暴力,不需要匯入其它任何依賴。
XML 檔案示例:
<Item>
<YEAR>
<![CDATA[ 1999 ]]>
</YEAR>
<CITING>
<![CDATA[ 0 ]]>
</CITING>
</Item>
解析程式示例:
import requests
import scrapy
url = 'http://xml檔案的地址'
# 獲取 xml 檔案
res = requests.get(url)
# 替換,就是這麼暴力
text = res.text.replace('<![CDATA[', '').replace(']]>', '')
# 建立一個 Selector 類的例項
sel = scrapy.Selector(text=text)
# 使用 xpath 選擇器
year_list = sel.xpath('//year/text()').extract()
問題解決。