Эквивалент InnerHTML при использовании lxml.html для анализа HTML.Python

Программы на Python
Anonymous
Эквивалент InnerHTML при использовании lxml.html для анализа HTML.

Сообщение Anonymous »

Я работаю над сценарием, использующим lxml.html для анализа веб-страниц. В свое время я довольно много работал с BeautifulSoup, но сейчас экспериментирую с lxml из-за его скорости.
Я хотел бы знать, какой наиболее разумный способ в библиотеке сделать эквивалент Javascript InnerHtml, то есть получить или установить полное содержимое тега.

Код: Выделить всё

A title
Some text

Поэтому InnerHtml:

Код: Выделить всё

A title
Some text
Я могу сделать это с помощью хаков (преобразование в строки/регулярные выражения и т. д.), но я предполагаю, что есть правильный способ сделать это с использованием библиотеки, которой мне не хватает из-за незнания. Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: Спасибо pobk за то, что показал мне путь к этому так быстро и эффективно. Для тех, кто пробовал то же самое, вот что у меня получилось:

Код: Выделить всё

from lxml import html
from cStringIO import StringIO
t = html.parse(StringIO(
"""
A title
Some text
Untagged text

Unclosed p tag
"""))
root = t.getroot()
body = root.body
print (element.text or '') + ''.join([html.tostring(child) for child in body.iterdescendants()])
Обратите внимание, что анализатор lxml.html исправит незакрытый тег, поэтому будьте осторожны, если это проблема.


Подробнее здесь: https://stackoverflow.com/questions/612 ... parse-html

Вернуться в «Python»