Python 小技巧:使用 scrapy.selector 从 XML 中提取信息 - Go语言中文社区

Python 小技巧:使用 scrapy.selector 从 XML 中提取信息


一、引言

曾几何时,我还记得老大曾经给我这么一个任务:

从一个 100 来行的 xml 文件中将所有 testxml 行中的 item5 信息提取出来

这个 xml 文件的结构大概如下图所示(敏感信息我已经替换成了其他字符)。

test.xml

当时的我还过于稚嫩,刚接触 Python 未能使用 Python 解决这个问题。正好现在学习了 Scrapy 爬虫框架,想到里面的 lxml 和 css 的 selector 编写方式,正好可以用来解析 xml 文件,也正好可以完成这个任务,遂想要把之前那个任务再完成一遍。

二、代码展现

使用了 Scrapy 的 selector 之后,这个问题变得简单多了,使用 xpath 或者 css 均可,代码如下:

from scrapy.selector import Selector


# 1. 读取 xml 文件信息
xml = ''
with open('test.xml') as f:
    xml = f.read()

# 2. 使用 scrapy.selector.Selector 解析 xml
sel = Selector(text=xml)

# 3. 解析需要的数据到 record.txt 中
with open('record.txt', 'w') as f:
    for line in sel.xpath('//testitem'):
        f.write('item1 = ' + line.xpath('./@item1').extract_first()
                + '  item5 = ' + line.xpath('./@item5').extract_first()
                + 'rn')

运行之后,生成的 record.txt 文件内容如下:

record.txt

三、总结

使用 scrapy.selector 强大的解析功能,也可以在其他方面大大提高我们的工作效率呢。

ps: 想要获取本博客实验代码的同学,可以点击这里
wangying2016/collectDataFromXML

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u012814856/article/details/78423473
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 23:18:14
  • 阅读 ( 986 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢