我正在使用lxml解析具有facebook注释标签的html,如下所示:
<fb:comments id="fb_comments" href="http://example.com" num_posts="5" width="600"></fb:comments>
我试图选择它以获取href值,但是当我执行cssselect(‘fb:comments’)时,出现以下错误:
The pseudo-class Symbol(u'comments', 3) is unknown
有办法吗?
编辑:
编码:
from lxml.html import fromstring
html = '...'
parser = fromstring(html)
parser.cssselect('fb:comments') #raises the exception
解决方法:
cssselect()
方法使用给定的CSS selector表达式解析文档.在您的情况下,冒号(:)是XML名称空间前缀分隔符(即< namespace:tagname />),它与CSS伪类语法(即tagname:pseudo-class)混淆.
根据lxml manual,您应该在cssselect()中使用namespace-prefix | element语法,以查找带有命名空间前缀(fb)的标记(注释).所以:
from lxml.html import fromstring
html = '...'
parser = fromstring(html)
parser.cssselect('fb|comments')