依子節點數量擷取節點
如同影片所示,XPATH 的 count() 函式可以用在述詞中,將選取範圍縮小到那些符合特定子節點數量的節點。當你的爬蟲仰賴某些節點至少要有一定數量的子節點時,這特別實用。
以下是你可能要爬取的某個頁面節錄(沒有任何 class 或 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 標頭、而且「至少」有兩個段落的 div 有興趣,因為你的應用程式無法處理不完整的天氣預報。
以上的 HTML 可透過 forecast_html 取得。
本練習屬於課程
R 的網頁爬蟲
練習說明
- 使用合適的 XPATH 選擇器選取目標
div,並運用count()函式。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Select only divs with one header and at least two paragraphs
forecast_html %>%
html_elements(xpath = '___')