如何解析XML文件并获取其数据Python

时间:2017-07-03 13:26:51

标签: python xml

我有以下网络服务:'https://news.google.com/news/rss/?ned=us&hl=en'

我需要解析它并获取XML文件中每个项目的标题和日期值。

我试图将数据转换为xml文件,我试图解析它,但我看到所有空白值:

import requests
import xml.etree.ElementTree as ET

response = requests.get('https://news.google.com/news/rss/?ned=us&hl=en')
with open('text.xml','w') as xmlfile:
    xmlfile.write(response.text)

with open('text.xml','rt') as f:
    tree = ET.parse(f)

for node in tree.iter():
    print (node.tag, node.attrib)

我不确定我哪里出错了。我必须以某种方式提取XML中每个项目的标题值和发布日期。

提前感谢您的任何答案。

1 个答案:

答案 0 :(得分:0)

@IljaEverilä是对的,你应该使用feedparser。 确保没有必要编写任何xml文件...除非你想将其存档。

我并没有真正得到你想要的输出,但这样的东西(python3)

import feedparser

url = 'https://news.google.com/news/rss/?ned=us&hl=en'
d = feedparser.parse(url)
#print the feed title
print(d['feed']['title'])
#print tuples (title, tag)
print([(d['entries'][i]['title'], d['entries'][i]['tags'][0]['term']) for i in range(len(d['entries']))] )

显式打印为utf8字符串使用:

print([(d['entries'][i]['title'].encode('utf8'), d['entries'][i]['tags'][0]['term'].encode('utf8')) for i in range(len(d['entries']))])

也许如果您显示预期的输出,我们可以帮助您从解析器中获取正确的内容。