2013-04-04 120 views
1

我有我认为是一个相当简单的问题。在xml文档中选出标签?

我取回从GDATA一个文件,这个文件:https://gdata.youtube.com/feeds/api/videos/Ej4_G-E1cAM/comments

我试图挑出

"<author>HERE</author>" 

标签的特牛逼,所以我会留下一个输出仅包含用户名。 python甚至是最好的方式去做这件事,还是应该使用另一种语言?自上午8:00(4小时)以来,我一直在使用Google进行搜索,但我还没有找到任何这样一个看似简单的任务。

最好的问候, - 米奇鲍威尔

+0

感谢编辑后cfreak,我是一个新的! – Freebie 2013-04-04 16:15:10

+0

没问题。欢迎来到Stackoverflow。你可以做的另一件事是添加你迄今为止尝试过的代码。为了让它看起来像我让你的XML只是突出显示它,并点击小按钮(或者把它放在它周围)。 – Cfreak 2013-04-04 16:16:43

+1

你可以在Python中使用一个名为beautifulsoup的工具。这将满足您所有的HTML解析需求。我不会推荐除python以外的任何东西:) – karthikr 2013-04-04 16:16:56

回答

1

你有一个原子饲料在那里,所以我会用feedparser来处理:

import feedparser 

result = feedparser.parse('https://gdata.youtube.com/feeds/api/videos/Ej4_G-E1cAM/comments') 
for entry in result.entries: 
    print entry.author 

此打印:

FreebieFM 
micromicros 
FreebieFM 
Sarah Grimstone 
FreebieFM 
# etc. 

Feedparser是一个外部库,但很容易安装。如果您只需要使用标准库,则可以使用ElementTree API,但要解析Atom提要,您需要将HTML实体包含在解析器中,并且必须处理名称空间(而不是ElementTree的优点):

from urllib2 import urlopen 
from xml.etree import ElementTree 

response = urlopen('https://gdata.youtube.com/feeds/api/videos/Ej4_G-E1cAM/comments') 
tree = ElementTree.parse(response) 

nsmap = {'a': 'http://www.w3.org/2005/Atom'} 
for author in tree.findall('.//a:author/a:name', namespaces=nsmap): 
    print author.text 

nsmap字典让ElementTreea:前缀转化为正确的命名空间的元素。

+0

值得一提的是,feedparser默认情况下不可用 – karthikr 2013-04-04 16:21:08

+0

Karthikr,Martijn ..我根本无法感谢你! – Freebie 2013-04-04 19:08:26