【问题标题】:Xpath get the parent tag with the child tagXpath用子标签获取父标签
【发布时间】:2017-07-06 20:18:22
【问题描述】:

我正在抓取一个网站,但该网站没有以良好的方式组织信息,例如有时有称为“传输”和“引擎类型”的字段,有时这些字段不存在,问题是每个内容都在里面 p 标签,带有 span 标签,其标题类似于 TransmissionEngine Type

在这里,如果我给你看,你会更好地理解它

有时有某些字段,有时没有

此处的发动机类型和变速器显示在车辆信息中

车辆信息中不存在发动机类型和变速箱

并没有任何具体的方法来映射所有页面的字段 如果我尝试使用此 xpath 访问引擎类型文本,则字段会切换原因

'.//div[@id="result"]/div[@class="details"][2]/p[2]/text()'

我获得不同值的最长时间,因为 p 标签中的值会被切换,所以 有时我会使用此 xpath 进行传输,有时我会使用此 xpath 获得引擎类型

所以我在想他们是一种获得所需字段的方法,旁边有跨度标题吗?

喜欢这个

<div class="details">
    <p><span class="label">Chassis/VIN #:</span>017S</p>
    <p><span class="label">Displacement:</span>0 </p>
    <p><span class="label">Odometer:</span>79,111</p>
    <p><span class="label">Condition:</span><a href="#condition-rating">2-</a>
    </p>
    <p><span class="label">Body Style:</span>coupe</p>
</div>

每个p标签都有一个span标签作为标题,有没有办法用获取p标签数据跨度标签标题?

例如,我可以使用 span 标签标题文本 engine type 获取 p 标签的文本 engine type ?

有一种方法可以像这样在 xpath 中通过文本获取项目

"//*[contains(text(), 'The Text Associated With The Element')]/text()"

有没有办法在这里实现这样的东西?

【问题讨论】:

    标签: python html xml xpath css-selectors


    【解决方案1】:

    您可以通过以下方式获取标题/值对列表:

    //div[@class="details"]/p//text()
    

    输出:

    Chassis/VIN #: 
    017S
    Displacement: 
    0 
    Odometer: 
    79,111
    Condition: 
    2-  
    Body Style: 
    coupe
    

    如果您想按标题获取特定值,例如"Odometer:":

    //div[@class="details"]/p[span="Odometer:"]/text()
    

    输出:

    79,111
    

    【讨论】:

    • 非常感谢安德森先生
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多