我使用和服抓取页面,我遇到了一些结构如下的数据。
问题是所有数据都存储在一个称为元素的元素中<div class="agents-stats-seperator">
,有些条目只有其中一个元素,有些最多有 4 个。
我试图抓取的每个数据中都有不同的数据,它们之间唯一的结构化差异是文本,或者:
- 待售住宅:
- 出租住宅:
- 商业出售:
- 商业出租:
我是和服,您可以选择通过 css 路径或正则表达式来定义要选择的内容。
目前我用以下定义:
div > div > div > div.agents-stats-seperator > div
/^()(.*?)()$/
当它拾取所有<div class="agents-stats-seperator">
元素时,这导致了一个问题,我一直坚持的是如何设置正则表达式以针对包含文本的元素Residential for sale:
我试过使用:
div > div > div > div.agents-stats-seperator > div [str="Residential to rent:"]
/^()(.*?)()$/
但无济于事,有什么想法吗?
供参考这里是html的片段
<div class="clearfix top agents-stats bg-muted">
<div class="agents-stats-seperator">
<div class="agents-stats-l">
Residential for sale:
<strong><a href="/for-sale/branch/1-click-homes-london-19269/">14</a></strong>
</div>
<div class="agents-stats-c">
Avg. asking price:
<strong class="price">£447,143</strong>
</div>
<div class="agents-stats-r">
Avg. sale listing age:
<span>18 weeks</span>
</div>
</div>
<div class="agents-stats-seperator">
<div class="agents-stats-l">
Residential to rent:
<strong><a href="/to-rent/branch/1-click-homes-london-19269/">9</a></strong>
</div>
<div class="agents-stats-c">
Avg. asking rent:
<strong class="price">£1,660 pcm</strong>
</div>
<div class="agents-stats-r">
Avg. rental listing age:
<span>3 weeks</span>
</div>
</div>
<div class="agents-stats-seperator">
<div class="agents-stats-l">
Commercial for sale
<strong><a href="/for-sale/commercial/branch/1-click-homes-london-19269/">1</a></strong>
</div>
<div class="agents-stats-c">
Avg. asking price:
<strong class="price">£700,000</strong>
</div>
<div class="agents-stats-r">
Avg. sale listing age:
<span>11 weeks</span>
</div>
</div>
<div class="agents-stats-seperator">
<div class="agents-stats-l">
Commercial to let
<strong><a href="/to-rent/commercial/branch/1-click-homes-london-19269/">1</a></strong>
</div>
<div class="agents-stats-c">
Avg. asking rent:
<strong class="price">£22,516 pa</strong>
</div>
<div class="agents-stats-r">
Avg. rental listing age:
<span>56 weeks</span>
</div>
</div>
</div>