Автор оригинала: Pankaj Kumar.
Python LXML – самая богатая функциональная и простая в использовании библиотека для обработки данных XML и HTML. Сценарии Python написаны для выполнения многих задач, таких как Web Scraping и Sharsing XML. В этом уроке мы будем учиться о библиотеке Python LXML и о том, как мы можем использовать его для анализа данных XML и выполнять также Scraping Scraping.
Библиотека Python LXML
- Простота использования : Он имеет очень простой синтаксис, чем любая другая настоящая библиотека
- Производительность : Обработка даже больших файлов XML занимает очень меньше времени
Python LXML установка
Мы можем начать использовать lxml, установив его как пакет Python с помощью инструмента PIP:
pip install lxml
Как только мы сделаем с установкой этого инструмента, мы можем начать работу с простыми примерами.
Создание HTML-элементов
С LXML мы можем создавать элементы HTML. Элементы также можно назвать узлами. Давайте создадим базовую структуру HTML-страницы, используя только библиотеку:
from lxml import etree
root_elem = etree.Element('html')
etree.SubElement(root_elem, 'head')
etree.SubElement(root_elem, 'title')
etree.SubElement(root_elem, 'body')
print(etree.tostring(root_elem, pretty_print=True).decode("utf-8"))
Когда мы запускаем этот скрипт, мы можем видеть, как формируются элементы HTML: Мы можем видеть элементы HTML или узлы. Pretty_Print Параметр помогает печатать отступ версию HTML-документа.
Эти элементы HTML в основном являются списком. Мы можем получить доступ к этому списку обычно:
html = root_elem[0] print(html.tag)
И это будет просто Печать голова Как это тег, представляющий прямо внутри тега HTML. Мы также можем распечатать все элементы внутри корневой бирки:
for element in root_elem:
print(element.tag)
Это будет распечатать все теги:
Проверка достоверности элементов HTML
С Iselement () Функция, мы даже можем проверить, если данный элемент является действительным HTML-элементом:
print(etree.iselement(root_elem))
Мы только что использовали последний сценарий, который мы написали. Это даст простому выходу:
Использование атрибутов с элементами HTML
Мы можем добавить метаданные для каждого элемента HTML-элемента, который мы строим, добавив атрибуты на элементы, которые мы производим:
from lxml import etree
html_elem = etree.Element("html", lang="en_GB")
print(etree.tostring(html_elem))
Когда мы запускаем это, мы видим: теперь мы можем получить доступ к этим атрибутам как:
print(html_elem.get("lang"))
Значение напечатано к консоли: Обратите внимание, что атрибут не существует для данного элемента HTML, мы получим Нет как вывод.
Мы также можем устанавливать атрибуты для элемента HTML как:
html_elem.set("best", "JournalDev")
print(html_elem.get("best"))
Когда мы распечатаем значение, мы получаем ожидаемые результаты:
Подтексты со значениями
Подтексты, которые мы построили выше, были пустыми, и это не весело! Давайте сделаем несколько подэлементов и поместите некоторые значения в нем с помощью библиотеки LXML.
from lxml import etree
html = etree.Element("html")
etree.SubElement(html, "head").text = "Head of HTML"
etree.SubElement(html, "title").text = "I am the title!"
etree.SubElement(html, "body").text = "Here is the body"
print(etree.tostring(html, pretty_print=True).decode('utf-8'))
Это похоже на некоторые здоровые данные. Давайте посмотрим на вывод:
Кормление RAW XML для сериализации
Мы можем предоставить необработанные данные XML непосредственно к Etree и разбирать его, а также полностью понимает, что это передано.
from lxml import etree
html = etree.XML('Head of HTMLI am the title! Here is the body')
print(etree.tostring(html, pretty_print=True).decode('utf-8'))
Давайте посмотрим на вывод: если вы хотите, чтобы данные были включать в себя декларацию тегов корня XML, даже это возможно:
from lxml import etree
html = etree.XML('Head of HTMLI am the title! Here is the body')
print(etree.tostring(html, xml_declaration=True).decode('utf-8'))
Давайте увидим вывод сейчас:
Python LXML Etree Parse () Функция
Разбор () Функция может быть использована для анализа из файлов и файловых объектов:
from lxml import etree
from io import StringIO
title = StringIO("Title Here ")
tree = etree.parse(title)
print(etree.tostring(tree))
Давайте увидим вывод сейчас:
Python LXML Etree Froming () Функция
Froming () Функция может быть использована для разбора строк:
from lxml import etree title = "Title Here " root = etree.fromstring(title) print(root.tag)
Давайте увидим вывод сейчас:
Функция Python LXML Etree XML ()
Froming () Функция может использоваться для записи XML-литералов непосредственно в источник:
from lxml import etree
title = etree.XML("Title Here ")
print(title.tag)
print(etree.tostring(title))
Давайте увидим вывод сейчас:
Ссылка: Документация LXML Отказ