Extrahera noder baserat på antalet underordnade element
Som visades i videon kan XPATH-funktionen count() användas i ett predikat för att begränsa urvalet till noder som matchar ett visst antal underordnade element. Det här är särskilt användbart när din skraper kräver att vissa noder har ett minsta antal underordnade element.
Här är ett utdrag från en sida (utan klasser eller ID:n …) som du kanske skrapar:
...
<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>
...
Du är bara intresserad av div-element som har exakt en h2-rubrik och minst två stycken, eftersom din applikation inte kan hantera ofullständiga väderprognoser.
HTML-koden ovan finns tillgänglig via forecast_html.
Den här övningen är en del av kursen
Webbskrapning i R
Övningsinstruktioner
- Välj ut de önskade
div-elementen med lämplig XPATH-selektor och använd funktionencount().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Select only divs with one header and at least two paragraphs
forecast_html %>%
html_elements(xpath = '___')