lxml: cssselect(): AttributeError: 'lxml.etree._Element' 对象没有属性 'cssselect'

2023-12-21

有人可以解释一下为什么第一次打电话给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

I get:

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


区别在于元素的类型。例子 -

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 http://lxml.de/api/lxml.html.HtmlElement-class.html有方法cssselect()。还,HTMLElement是一个子类etree._Element .

But the lxml.etree._Element http://lxml.de/api/lxml.etree._Element-class.html没有那个方法。

如果你想解析html,你应该使用lxml.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

lxml: cssselect(): AttributeError: 'lxml.etree._Element' 对象没有属性 'cssselect' 的相关文章

随机推荐