Kimonoを使用してページをスクレイピングすると、以下のような構造のデータに出くわしました。
問題は、すべてのデータが と呼ばれる要素に格納されている<div class="agents-stats-seperator">
ことです。これらの要素の 1 つしか持たないエントリもあれば、最大 4 つ持つエントリもあります。
それらのそれぞれには、スクレイピングしようとしているさまざまなデータがあり、それらの間の構造化された唯一の違いは、次のいずれかのテキストです。
- 販売用住宅:
- 賃貸住宅:
- 販売のためのコマーシャル:
- 商業用賃貸:
Im Kimonoには、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>