2013-04-04 31 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