根据子节点数量提取节点
正如视频所示,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>
...
您只对那些恰好包含 1 个 h2 标题,且至少包含 2 个段落的 div 感兴趣,因为您的应用无法很好地处理不完整的天气预报。
上述 HTML 可通过 forecast_html 获得。
本练习是课程的一部分
R 语言网页抓取
练习说明
- 使用合适的 XPATH 选择器并结合
count()函数,选出目标div。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Select only divs with one header and at least two paragraphs
forecast_html %>%
html_elements(xpath = '___')