Автор оригинала: 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 Отказ