Рубрики
Без рубрики

Python lxml.

Python LXML, Python LXML Установка, Пример Python LXML, Python LXML Etree, Etree.Subelement, Etree.xml, Etree.Parse, Etree.FromString, Python Etree, Python LXML Etree Функции для анализа XML и HTML-документа, атрибуты, элементы, узлы, узлы Отказ

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