开始使用免费开始使用

根据子节点数量提取节点

正如视频所示,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 = '___')
编辑并运行代码