感觉 pyquery 对大写支持不好.
In [3]: dom = pq("<TEST>1</TEST>")
In [4]: dom("TEST").text()
''
这是故意的,还是没做好.
的确,这算是Bug吧……
这是因为 lxml 行为不一致导致的。
pyquery 默认使用 lxml.etree 进行解析,它是区分大小写的。
但是按照 HTML 的标准来说,tag 是不区分大小写的。所以 pyquery 将 css selector 转换成 xpath 时,是使用的小写: dom._css_to_xpath("TEST")
你可以使用 dom = pq("<TEST>1</TEST>", parser='html')
强制使用 lxml.html 建树,即可。