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

  • lxml: Ошибка загрузки DLL: указанный модуль не найден
  • Установка easy_install ... для установки lxml
  • lxml xpath в python, как обрабатывать отсутствующие теги?
  • lxml cssselect Parsing
  • Закройте тег без текста в lxml
  • как получить полное содержимое узла с помощью xpath & lxml?
  • Как отладить ошибку памяти Python?
  • Элемент добавления python lxml после другого элемента
  • 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 .

    Python - лучший язык программирования в мире.