我尝试刮过一个链接(https://www.century21.com/real-estate/rock-spring-ga/LCGAROCKSPRING/)。我想从中提取“床”数据。由于其中一些房屋有一些空的细节,因此仅提取了很少的“床”细节。但我想了解所有细节。如果不存在,则应显示“ NaN”或类似内容。另一个问题是我已经检查了这个标签:
<div class="property-beds">
<strong>2</strong> beds
</div>
我使用xpath命令提取“ 2张病床”。 nOT“ 2张病床”仅显示“病床”。所以我用“ |”统一这两个要素。
response.xpath('//div[@class="property-beds"]/strong/text() | //div[@class="property-beds"]/text()']
这给了我正确的输出,但问题是它在2条单独的线中显示结果(一条线中有2条,另一条线中有床)。如何在一行中显示?
最佳答案
您可以在父元素上使用string()
来提取元素和所有子节点的文本:
In [10]: root.xpath('string(//div[@class="property-beds"])')
Out[10]: '2 beds'
如果您有多个元素,则必须遍历与
//div[@class="property-beds"]
匹配的元素,然后再执行elem.xpath('string()')
。