Python用のlxmlチュートリアルでxpathを実行した後、私にバグのような2つの動作を理解することは難しいと思っています。第1に、xpath式が1つの要素だけを明確に選択していてもlxmlがリストを返すように見えます.2つ目の.xpathは、直接的なxpath検索式で選択された要素自体ではなく要素の親を返します。.xpathのlxmlバグ?
XPathについての私の理解は間違っているのですか、またはlxmlには本当にバグがありますか?
私が話している行動を複製するスクリプト:
from lxml.html.soupparser import fromstring
doc = fromstring("""
<html>
<head></head>
<body>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</body>
</html>
""")
print doc.xpath("//html")
#[<Element html at 1f385e0>]
#(This makes sense - return a list of all possible matches for html)
print doc.xpath("//html[1]")
#[<Element html at 1f385e0>]
#(This doesn't make sense - why do I get a list when there
#can clearly only be 1 element returned?)
print doc.xpath("body")
#[<Element body at 1d003e8>]
#(This doesn't make sense - according to
#http://www.w3schools.com/xpath/xpath_syntax.asp if I use a tag name
#without any leading/I should get the *child* nodes of the named
#node, which in this case would mean I get a list of
#p tags [<Element p at ...>, <Element p at ...>]
私の問題は、lxmlを使ってすべてのpタグを選択する方法を理解できないということではありません。私の問題は、lxmlがXPathチュートリアルに基づいて期待していたものとは異なる動作をしているので、なぜlxmlにバグがないのかを知ることです。 – Trindaz