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()
问题解决。