子要素の数に基づいてノードを抽出する
動画で説明したように、XPATH の count() 関数はプレディケート内で使うことで、子要素の数が条件に合うノードだけに絞り込めます。これは、スクレイパーが「子要素が最低限いくつあるか」に依存している場合に特に役立ちます。
次は、(クラスやIDが一切ない…)スクレイピング対象になり得るページからの抜粋です。
...
<div>
<h1>Tomorrow</h1>
</div>
<div>
<h2>Berlin</h2>
<p>Temperature: 20°C</p>
<p>Humidity: 50%</p>
</div>
<div>
<h2>London</h2>
<p>Temperature: 15°C</p>
</div>
<div>
<h2>Zurich</h2>
<p>Temperature: 22°C</p>
<p>Humidity: 60%</p>
</div>
...
今回は、h2 ヘッダーがちょうど 1 つあり、かつ段落が少なくとも 2 つある div のみを対象にします。未完の天気予報はアプリケーションで正しく扱えないためです。
上記の HTML は forecast_html から利用できます。
この演習はコースの一部です
Rで学ぶWebスクレイピング
演習の手順
count()関数を活用して、目的のdivを適切な XPATH セレクタで選択してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Select only divs with one header and at least two paragraphs
forecast_html %>%
html_elements(xpath = '___')