Python, L XML ElementTree не делает elementtree из элемента STYLE - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь получить элементы из XML. Кажется, работает нормально для всего документа, кроме случаев, когда я нажимаю на что-либо в элементе STYLE Тогда l xml не строит дерево. Возврат к нормальной функции после прохождения элемента. Я думал, что это могло быть зарезервированное имя элемента, но я не могу найти ничего подтверждающего это. Может быть, я упускаю что-то явно очевидное ...

import requests
import lxml.html

response = requests.get('http://www.beerxml.com/recipes.xml')

def depth(node):
    d = 0
    while node is not None:
        d += 1
        node = node.getparent()
    return d

tree = lxml.html.fromstring(response.content)

for recipe in tree:
  for child in recipe.iter():
    print(depth(child),child.tag, '\t\t\t',child.text)

Результат:

5 style              
 <NAME>Witbier</NAME>
 <VERSION>1</VERSION>
 <CATEGORY>Belgian &amp; French Ale</CATEGORY>
 <CATEGORY_NUMBER>1</CATEGORY_NUMBER>
...

Ожидаемый результат:

5 style              
6 name Witbier
6 version 1
6 category Belgian &amp; French Ale
6 category_number 1
....

1 Ответ

0 голосов
/ 09 января 2020

Используйте import lxml.etree вместо import lxml.html

И замените

tree = lxml.html.fromstring(response.content)

на

tree = lxml.etree.fromstring(response.content)
...