lxml.html игнорирует атрибуты класса body

Я использую lxml.html для анализа содержимого html. Но я не понимаю, почему lxml отбрасывает атрибуты тега «тело». Пробовал использовать как lxml.html.parse, так и lxml.html.document_fromstring, как предложено здесь

Но все же это не работает.

Пример html-строки: -

<html class="hello"> <head> <iframe src="index.html"></iframe> </head> <body class="foo"><h1>a</h1></body> </html>

Кто-нибудь еще сталкивался с этой проблемой?


person Karan    schedule 09.05.2015    source источник


Ответы (1)


Возможно, слишком поздно, чтобы помочь, но я столкнулся с аналогичной проблемой с тем же базовым парсером (lxml использует libxml2, который я использую напрямую). Я считаю, что проблема в том, что «iframe» не может отображаться в «заголовке» документа. Когда libxml2 видит его там, он пытается продолжить синтаксический анализ, неявно закрывая ‹head› и запуская ‹body›. Этот неявно созданный ‹body› затем сбивает вас с толку, поскольку он не имеет класса в вашем фактическом теге ‹body›. На самом деле я думаю, что ваше настоящее «тело» вообще не появится в проанализированной модели.

person Jason Sankey    schedule 09.02.2016