1. 程式人生 > >提取 xml 檔案中的 CDATA 資料

提取 xml 檔案中的 CDATA 資料

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()

問題解決。