開始使用免費開始

依子節點數量擷取節點

如同影片所示,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 = '___')
編輯並執行程式碼