2017-07-03 51 views
0

我有一个下面的Web服务:“​​”如何解析XML文件并获取其数据的Python

我需要解析,并得到了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中每个项目的标题和发布日期的值。

感谢您提前提供任何答案。

+0

https://stackoverflow.com/questions/2244836/rss-feed-parser-library-in-python,只是'[(e.title,e.published)for e在feedparser.parse(响应。文).entries]'。 –

+0

我回答了你的问题吗? – mquantin

+0

是的,你做了...非常感谢lija! –

回答

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']))]) 

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

+0

我在这里遇到一个奇怪的问题: –

+0

回溯(最近一次通话最后): 文件“Hacker.py”,第8行,在 print((d ['entries'] [i] [ 'title'],d ['entries'] [i] ['published'])) 文件“C:\ Users \ bhatsubh \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ encodings \ c p437.py ”第19行,在编码 返回codecs.charmap_encode(输入,self.errors,encoding_map)[0] UnicodeEncodeError: '字符表' 编解码器不能在 位置50编码字符 '\ u2014':字符映射到

+0

任何想法,为什么这是未来? –