2017-07-06 103 views
2

我正在抓取一个网站,并且该网站没有以良好方式组织的信息,例如有时称为“传输”和“引擎类型”的字段,有时候这些字段不存在而问题是一切都是每个p标签内,具有span标记与像传输引擎键入标题Xpath获取带有子标签的父标签

在这里你可以更好的了解它,如果我告诉你

有时有某些领域,有时没有

enter image description here

这里发动机类型和传输存在于车辆信息

enter image description here

这里发动机类型和传输不存在于车辆信息

并没有任何具体的方法来映射字段的所有p年龄 场被切换的原因,如果我试图用这个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标签具有跨度标签作为标题,有没有一种方式来获得与跨度标签标题p标签数据?

因此,例如,我可以得到p标签的文本发动机类型跨度标签标题文本发动机类型

有一种方法通过文本的XPath获得项目这样

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

在那里实现这样的事情在这里的方法吗?

回答

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 
+0

非常感谢安德森先生 –