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

问题解决。

猜你喜欢

转载自blog.csdn.net/mywang88/article/details/85260308
今日推荐