Разбор XML из ответа API - PullRequest
       19

Разбор XML из ответа API

2 голосов
/ 25 января 2012

Я несколько часов пытался получить ответ от imgur 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()

Я большой нуб с питоном, это мой первый раз. Питон девственник. Я прочитал, что вы можете разобрать xml с ElementTree, но я не могу найти никакой классной документации.

Надеюсь, ты сможешь мне помочь. Спасибо.

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Сохранение ответа от imgur-api в файл. Затем необходимо использовать анализатор xml для анализа XML-ответа / файла, который вы получаете от Imgur-API.

Существует множество опций, таких как lxml или BeautifulSoup .

Вот пример использования lxml с XPath 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-файла:

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

Если вам нужно выполнить синтаксический анализ непосредственно с URL

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

Для, XPath используйте расширение firebug firefox или установите firepath

1 голос
/ 25 января 2012

Когда я начал использовать включенный модуль ElementTree, я обнаружил, что в документации отсутствуют хорошие примеры (в настоящее время их всего 3, и только один из них показывает что-либо практическое).

Я ответил на пару вопросов здесь о SO, связанных с lxml / ElementTree, и обычно я вижу, как люди застревают, пытаясь написать эти странные списки, чтобы разобраться с чем-то, что XPath обрабатывает в одной строке гораздо более четко:

Если у вас есть более конкретный вопрос, пожалуйста, опубликуйте исходный XML-код и желаемый эффект.

Надеюсь, это поможет,

...