如果另一个元素已经存在,则scrapy获取元素内容

时间:2018-11-03 16:54:16

标签: python xpath scrapy

我有这个html脚本:

<ul class="infoGeneraleTxt column2">
    <li>
        <h4>Année :</h4>
        <span>2017</span>
    <li>
    <li>
        <h4>Nombre de portes :</h4>
        <span>5</span>
    <li>
    <li>
        <h4>Puissance fiscale :</h4>
        <span>6 CV</span>
    <li>

我想获取所有span的值,但有时我有3个li,有时只有2个,所以我得到了错误的值。

是否有一种方法可以根据先前的h4标签名称来捕获跨度值?

例如,seconde标签的示例:    如果h4 ==“ Nombre de portes:”,请在下面给我span参数。

2 个答案:

答案 0 :(得分:0)

是的

x.select('//li[h4/text()=="Nombre de portes :"]/span')

答案 1 :(得分:0)

尝试在XPath以下使用:

"//li[h4='Nombre de portes :']/span"

如果span还包含带有文本li的标头,则获得li的{​​{1}}子级

您也可以尝试

'Nombre de portes :'

精确选择"//li/h4[.='Nombre de portes :']/following-sibling::span" 节点之前的span节点,该节点具有所需的文本内容,但是IMO第一选项应该足够