擅长:python、mysql、java
<blockquote>
<p>I tried this but it doesn't work.</p>
<pre><code>t = item.findtext('.//span[@class="python"]//a[2]')
</code></pre>
</blockquote>
<p><strong>这是关于<code>//</code>缩写的常见问题解答。</p>
<p><code>.//a[2]</code>表示:选择当前节点的所有<code>a</code>子节点,这些子节点是其父节点的第二个<code>a</code>子节点。因此,这可能会选择多个元素或不选择元素——具体取决于具体的XML文档。</p>
<p>简单地说,<code>[]</code>运算符的优先级高于<code>//</code>。</p>
<p>如果只希望返回所有节点中的一个(第二个),则必须使用方括号强制执行所需的优先级:</p>
<p><code>(.//a)[2]</code></p>
<p>这实际上选择了当前节点的第二个<code>a</code>后代。</p>
<p><strong>对于问题中使用的实际表达式,将其更改为:</p>
<pre><code>(.//span[@class="python"]//a)[2]
</code></pre>
<p>或更改为:</p>
<pre><code>(.//span[@class="python"]//a)[2]/text()
</code></pre>