Я пытаюсь разобрать XML из URL, но получаю ошибку FileNotFoundError
где я делаю неправильно?
Вот мой код:
import xml.etree.ElementTree as ET
import requests
url = "http://cs.stir.ac.uk/~soh/BD2spring2022/assignmentdata.php"
params = {'data':'spurpyr'}
response = requests.get (url, params)
xml_content = response.content
tree = ET.parse(xml_content)
root = tree.getroot()
print(root.tag)
ET.parse
анализирует из файла, вместо ET.parse
попробуйте использовать ET.fromstring
, и это, вероятно, поможет. Я не могу проверить ваш конкретный случай, так как указанный вами URL-адрес дает мне ошибку. Итак, попробуйте изменить свой код на этот
import xml.etree.ElementTree as ET
import requests
url = "http://cs.stir.ac.uk/~soh/BD2spring2022/assignmentdata.php"
params = {'data':'spurpyr'}
response = requests.get (url, params)
xml_content = response.content
root = ET.fromstring(xml_content)
print(root.tag)
Да, мой плохой. я отредактирую свой ответ
Да, я отредактировал. Теперь это должно работать.
Как сохранить дочерние элементы в отдельные переменные, скажем, var_a и var_b, я запустил цикл for, чтобы получить их, как мне их сохранить for child in root: print(child.tag, child.attrib)
Я не уверен, что вы говорите, но я полагаю, что вам может понадобиться такой словарь dict = {}
и в следующей строке вы можете сделать это for child in root: dict[child.tag] = child.attrib
.
Я хочу сохранить их в отдельных переменных
Вы не можете сделать это, не без запрещенных методов. Один из таких запрещенных методов — использовать exec
и сделать что-то подобное exec(f"{child.tag} = child.attrib")
, но не делайте этого, потому что оно того не стоит.
Я получил эту ошибку
AttributeError: 'xml.etree.ElementTree.Element' object has no attribute 'getroot'