擅长:python、mysql、java
<p>你的第一个例子很好,但可能不是你想的那样:</p>
<pre><code>test=html.xpath("//ul[@class='toc']/li[@class='level2']/div[@class='li']/a/text()='One'")
</code></pre>
<p>这返回的是一个布尔值,如果xpath表达式左侧的结果集中的任何节点的条件<code>...='One'</code>为true,则返回值为true。这就是为什么在第二个示例中会出现错误:<code>True[0]</code>无效。</p>
<p>您可能希望所有节点都与expession匹配,将<code>'One'</code>作为文本。相应的表达式为:</p>
<pre><code>test=html.xpath("//ul[@class='toc']/li[@class='level2']/div[@class='li']/a[text()='One']")
</code></pre>
<p>这将返回一个nodeset作为结果,或者如果您只需要url作为字符串:</p>
<pre><code>test=html.xpath("//ul[@class='toc']/li[@class='level2']/div[@class='li']/a[text()='One']/@href")
# returns: ['#link1']
</code></pre>