2012-01-24 84 views
2

我一直在嘗試幾個小時來從imgur API獲取響應。我在終端中得到了XML,但我不知道如何獲取並解析它。這是我的代碼。從API響應解析XML

c = pycurl.Curl() 
values = [ 
      ("key", "Super Secret API Number"), 
      ("image", (c.FORM_FILE, "pic.jpg"))] 

c.setopt(c.URL, "http://api.imgur.com/2/upload.xml") 
c.setopt(c.HTTPPOST, values) 
c.perform() 
c.close() 

我是一個大的noob與python,這是我第一次。 Python處女。我讀過你可以用ElementTree解析XML,但我找不到任何很酷的文檔。

希望你能幫助我。謝謝。

+0

你可以嘗試建立HTTP請求時:) – dzen

回答

3

將來自imgur-api的響應存儲到文件中。需要使用xml解析器來解析從Imgur-API獲得的xml響應/文件。

有很多選項可用,如lxmlBeautifulSoup

下面是如何使用lxmlXPath expressions的示例。

from lxml import etree 


xml = """<foo>baz!</foo>""" 

>>> xml = """<foo>baz!</foo>""" 
>>> xp = etree.fromstring(xml) 
>>> values = xp.xpath("//foo/text()") 
>>> values 
['baz!'] 

如果您需要解析XML文件:如果您需要直接從URL

# parse from URL 
etree.parse("http://example.com/somefile.xml") 

因爲,XPath的使用firefox的firebug擴展或安裝解析

# parse from file 
et = etree.parse(source_xml) 
value = et.xpath("your xpath xpr here") 

firepath

+0

非常感謝使用nice蟒蛇請求https://github.com/kennethreitz/requests。沒有想到,聽起來很合邏輯。 –

+0

@AjjandroAr:xpath非常合乎邏輯,你甚至可以嘗試在lxml中使用'cssselect'。使用螢火蟲複製所需元素的'csspath'。 – RanRag

1

當我開始使用附帶的ElementTree模塊時,我發現了documentation缺乏很好的例子(目前只有3個,只有其中一個顯示任何立即可行的)。

我在這裏回答了幾個問題上SO相關限於lxml/ElementTree的,我平時看到的人陷入試圖寫這些奇怪的列表理解來處理事情的XPath一行處理更清楚:

如果你有一個更具體的問題,請張貼一些源XML和預期的效果。

我希望這有助於

+0

謝謝!這也會有幫助。 –