2010-07-16 150 views
1

我正在嘗試縮短bit.ly api並使其工作。它返回到我的腳本一個XML文檔。我想提取出標籤,但似乎不能正確解析它。解析bit.ly的XML響應

askfor = urllib2.Request(full_url) 
response = urllib2.urlopen(askfor) 
the_page = response.read() 

所以the_page包含xml文檔。我嘗試過:

from xml.dom.minidom import parse 
doc = parse(the_page) 

這會導致錯誤。我究竟做錯了什麼?

+3

什麼是錯誤? – shookster 2010-07-16 01:44:55

+0

IOError:[Errno 2]沒有這樣的文件或目錄 parse()認爲the_page是一個文件。我怎樣才能從varaibale讀取the_page – Ali 2010-07-16 02:01:58

回答

2

您不提供錯誤消息,因此我無法確定這是唯一的錯誤。但是,xml.minidom.parse不帶字符串。從文檔字符串爲parse

Parse a file into a DOM by filename or file object.

你應該嘗試:

response = urllib2.urlopen(askfor) 
doc = parse(response) 

因爲response會像一個文件對象。或者,您可以使用parseString方法代替minidom(然後通過the_page作爲參數)。

編輯:提取URL,你需要做的:

url_nodes = doc.getElementsByTagName('url') 
url = url_nodes[0] 
print url.childNodes[0].data 

getElementsByTagName結果是所有節點匹配的列表(只是一個在這種情況下)。 url是您注意到的一個元素,它包含一個包含您需要的數據的子節點Text節點。

+0

那解析the_page,但我似乎無法得到一個單獨的標籤。使用doc.getElementsByTagName(「url」)返回:[]而不是中間的數據。 – Ali 2010-07-16 02:28:59

+0

更新了我的答案,參見上文。 – ars 2010-07-16 02:49:08

1
from xml.dom.minidom import parseString 
doc = parseString(the_page) 

請參閱xml.dom.minidom的文檔。

+0

解析the_page,但我似乎無法得到一個單獨的標籤。 使用doc..getElementsByTagName(「url」) 返回:[]而不是數據。 – Ali 2010-07-16 02:28:34

+0

繼續閱讀文檔。你得到的那個對象有你從中得到的屬性(a)得到它的孩子和(b)獲得數據。 – 2010-07-16 15:22:55