Эквивалент 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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