Как распарсить xml python?
Здравствуйте!
Ребята, подскажите, каким образом можно корректно распарить xml документ при помощи PYTHON?
Только начинаю, и не могу найти хорошего примера.
Хотелось бы разобраться на практике с комментариями.
Вот мой документ — defaultVar.xml
Host 10.64.13.131:1576 true false String 1559628965605 MaxConnections 10 true false Integer 1559628965605 SID taffy true false String 1559628965605
Может ли кто-то показать, каким образом выбирать тэги SID, HOST (а так же все их атрибуты!).
Совсем не доходит голова. Если можно, то с комментариями.
Спасибо!
- Вопрос задан более трёх лет назад
- 4037 просмотров
1 комментарий
Простой 1 комментарий
Работа с XML из Python

Не все элементы входных данных XML будут в конечном итоге являться элементами анализируемого дерева. В настоящий момент этот модуль пропускает все комментарии XML, инструкции по обработке и объявления типа документа во входных данных. Тем не менее, деревья, построенные с использованием API этого модуля, а не синтаксического анализа из XML-текста, могут иметь комментарии и инструкции по обработке в них.
Создание и сборка XML-документов
Импорт модуля Элемента Дерева
import xml.etree.ElementTree as ET
Функция Element () используется для создания элементов XML
p=ET.Element('parent')
Функция SubElement (), используемая для создания вложенных элементов в элементе give
c = ET.SubElement(p, 'child1')
Функция dump() используется для вывода элементов xml .
ET.dump(p) #
Если вы хотите сохранить в файл, создайте дерево XML с функцией ElementTree() и сохраните в файл, используя метод write()
tree = ET.ElementTree(p) tree.write("sample.xml")
Функция Comment() используется для вставки комментариев в XML-файл.
comment = ET.Comment('user comment') p.append(comment) #этот комментарий будет добавлен к родительскому элементу ET.dump(p) #
Изменение файла XML
Импортируйте модуль ElementTree и откройте файл XML, получите элемент XML
import xml.etree.ElementTree as ET tree = ET.parse('sample.xml') root=tree.getroot() element = root[0] #получите первого ребенка родительского корня element #
Элементом объекта можно управлять, изменяя его поля, добавляя и изменяя атрибуты, добавляя и удаляя дочерние элементы
element.set('attribute_name', 'attribute_value') #установите артрибут xml элементу element.text="string_text"
Если вы хотите удалить элемент, используйте метод Element.remove()
root.remove(element)
Метод ElementTree.write() , используемый для вывода объекта XML в файлы XML.
tree.write('sample.xml')
Открытие и чтение больших файлов XML с помощью iterparse (инкрементальный анализ)
Иногда мы не хотим загружать весь XML-файл, чтобы получить необходимую нам информацию. В этих случаях полезно постепенно загружать соответствующие разделы и затем удалять их, когда мы закончим. С помощью функции iterparse вы можете редактировать дерево элементов, которое хранится при разборе XML.
Импортируйте объект ElementTree:
import xml.etree.ElementTree as ET
Откройте файл .xml и переберите все элементы:
for event, elem in ET.iterparse("yourXMLfile.xml"): # . сделайте что-нибудь .
Кроме того, мы можем искать только определенные события, такие как начальный / конечный теги или пространства имен. Если эта опция не указана (как указано выше), возвращаются только события «end»:
events=("start", "end", "start-ns", "end-ns") for event, elem in ET.iterparse("yourXMLfile.xml", events=events): # . сделайте что-нибудь .
Вот полный пример, показывающий, как очистить элементы из дерева в памяти, когда мы закончим с ними:
for event, elem in ET.iterparse("yourXMLfile.xml", events=("start","end")): if elem.tag == "record_tag" and event == "end": print elem.text elem.clear() # . сделайтe что-нибудь другое .
Открытие и чтение с помощью ElementTree
Импортируйте объект ElementTree, откройте соответствующий XML-файл и получите корневой тег:
import xml.etree.ElementTree as ET tree = ET.parse("yourXMLfile.xml") root = tree.getroot()
Есть несколько способов поиска по дереву. Сначала по итерации:
for child in root: print(child.tag, child.attrib)
В противном случае вы можете ссылаться на определенные места, такие как список:
print(root[0][1].text)
Для поиска конкретных тегов по имени, используйте .find или .findall :
print(root.findall("myTag")) print(root[0].find("myOtherTag"))
Поиск в XML с помощью XPath
Начиная с версии 2.7 ElementTree имеет лучшую поддержку XPath запросов. XPath — это синтаксис, позволяющий вам перемещаться по XML, как SQL используется для поиска в базе данных. Как find и findall функции поддержки XPath. Xml ниже будет использоваться для этого примера
Мечтают ли андроиды об электроовцах? Philip K. Dick The Colour of Magic Terry Pratchett The Eye of The World Robert Jordan
Поиск всех книг:
import xml.etree.cElementTree as ET tree = ET.parse('sample.xml') tree.findall('Books/Book')
Поиск книги с названием «Цвет магии»:
tree.find("Books/Book[Title='The Colour of Magic']") # всегда используйте '' в правой стороне сравнения
tree.find("Books/Book[@id='5']") # поиск с xml атрибутами должен иметь '@' перед именем
Поиск второй книги:
tree.find("Books/Book[2]") # индексы начинаются с 1, не с 0
Поиск последней книги:
tree.find("Books/Book[last()]") # 'last' единственная xpath функция позволенная в ElementTree
Поиск всех авторов:
tree.findall(".//Author") # поиск с // должен использовать родственный путь
Как распарсить xml python
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Как парсить данные из HTML и XML в Python
Узнайте, как парсить данные из HTML и XML в Python с помощью популярных библиотек BeautifulSoup и lxml, с примерами кода!
Алексей Кодов
Автор статьи
10 июля 2023 в 17:48
Парсинг данных из HTML и XML является распространенной задачей в области Python-разработки. В этой статье мы рассмотрим основные инструменты и подходы для решения этой задачи.
BeautifulSoup
BeautifulSoup — это популярная библиотека для парсинга HTML и XML документов. Она предоставляет простой и удобный интерфейс для извлечения данных из веб-страниц.
Установка
Для установки библиотеки BeautifulSoup выполните следующую команду:
pip install beautifulsoup4
Пример использования
from bs4 import BeautifulSoup html_doc = """ <html> <head> <title>Тестовая страница</title> </head> <body> <p мир!</p> <p пример использования BeautifulSoup для парсинга HTML.</p> </body> </html> """ soup = BeautifulSoup(html_doc, 'html.parser') # Получение текста внутри тега title title = soup.title.string print(title) # Вывод: Тестовая страница # Получение текста внутри тега с классом "title" page_title = soup.find('p', class_='title').string print(page_title) # Вывод: Привет, мир!
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

lxml
lxml — это еще одна мощная библиотека для парсинга HTML и XML документов. Она предоставляет быстрый и эффективный парсер, основанный на C-библиотеках libxml2 и libxslt.
Установка
Для установки библиотеки lxml выполните следующую команду:
pip install lxml
Пример использования
from lxml import etree xml_doc = """ <root> <element 1</element> <element 2</element> <element 3</element> </root> """ root = etree.fromstring(xml_doc) # Получение всех элементов с тегом "element" elements = root.findall('element') for element in elements: print(f': ') # Вывод: # 1: Элемент 1 # 2: Элемент 2 # 3: Элемент 3
Теперь вы знаете основные инструменты и подходы для парсинга данных из HTML и XML в Python. Не забывайте про практику, экспериментируйте и улучшайте свои навыки!