<p>您可以使用<a href="https://docs.python.org/3/library/stdtypes.html#boolean-operations-and-or-not" rel="nofollow noreferrer">^{<cd1>} operator</a>在两件事之间进行选择,同时对第一件事有偏好</p>
<pre><code>>>> a="www.example.com"
>>> b="www.example2.com"
>>> a or b
'www.example.com'
>>> a=None
>>> a or b
'www.example2.com'
>>>
</code></pre>
<p>这种工作方式是,如果<code>a</code>的<a href="https://docs.python.org/3/library/stdtypes.html#truth-value-testing" rel="nofollow noreferrer">"truth"</a>值为true,则<code>a or b</code>返回<code>a</code>,否则返回<code>b</code></p>
<p>所以你可以</p>
<pre><code>product.xpath (".//span[@id='priceblock_ourprice']/text()").get() or product.xpath (".//span[@id='priceblock_saleprice']/text()").get()
</code></pre>
<p><strong>编辑</strong></p>
<p>您还可以将其封装到自己的函数中,如下所示</p>
<pre><code>def get_vlr_atual(product, default=None):
lst_xpaths = [".//span[@id='priceblock_ourprice']/text()",
".//span[@id='priceblock_saleprice']/text()"
]
for path in lst_paths:
result = product.xpath(path).get()
if result is not None:
return result
return default
</code></pre>
<p>这与以前基本相同,但可以轻松地扩展到任意多个xpath,如果所有这些都失败,只需返回一些方便的默认值</p>
<p>和简单的使用一样</p>
<pre><code>...
{...
'vlr_atual': get_vlr_atual(product),
...
}
...
</code></pre>