lxml: cssselect (): AttributeError: объект 'lxml.etree._Element' не имеет атрибута 'cssselect'

Может кто-нибудь объяснить, почему первый вызов root.cssselect() работает, а второй не удается?

 from lxml.html import fromstring from lxml import etree html='<html><a href="http://example.com">example</a></html' root = fromstring(html) print 'via fromstring', repr(root) # via fromstring <Element html at 0x...> print root.cssselect("a") root2 = etree.HTML(html) print 'via etree.HTML()', repr(root2) # via etree.HTML() <Element html at 0x...> root2.cssselect("a") # --> Exception 

Я получил:

 Traceback (most recent call last): File "/home/foo_eins_d/src/foo.py", line 11, in <module> root2.cssselect("a") AttributeError: 'lxml.etree._Element' object has no attribute 'cssselect' 

Версия: lxml==3.4.4

One Solution collect form web for “lxml: cssselect (): AttributeError: объект 'lxml.etree._Element' не имеет атрибута 'cssselect'”

Разница заключается в типе элемента. Пример –

 In [12]: root = etree.HTML(html) In [13]: root = fromstring(html) In [14]: root2 = etree.HTML(html) In [15]: type(root) Out[15]: lxml.html.HtmlElement In [16]: type(root2) Out[16]: lxml.etree._Element 

lxml.html.HTMLElement имеет метод cssselect() . Кроме того, HTMLElement является подклассом etree._Element .

Но lxml.etree._Element не имеет этого метода.

Если вы хотите разобрать html, вы должны использовать lxml.html .

  • Ошибка при установке lxml
  • Закройте тег без текста в lxml
  • RuntimeWarning: компиляция версии 2.6 модуля 'lxml.etree' не соответствует версии исполнения 2.7
  • переписать ElementTree код в lxml
  • python lxml пишите в файл в предопределенном порядке
  • разобрать содержимое html путем передачи пользовательского ввода даты
  • Эквивалент InnerHTML при использовании lxml.html для анализа HTML
  • lxml Изменение символов Unicode
  • Python - лучший язык программирования в мире.