You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化R语言rvest爬虫代码提取生存物品列表?

问题解决方案

一、优化Wyatt Black页面的爬虫代码(解决漏提首件物品、空值问题)

核心问题大概率是CSS选择器匹配范围不全,或未过滤空节点导致,可按以下步骤调整:

  1. 加载依赖并获取页面
library(rvest)
library(stringr)

# 获取目标页面内容
url <- "https://www.history.com/shows/alone/cast/wyatt-black"
page <- read_html(url)
  1. 精准匹配节点并过滤无效内容
    通过浏览器开发者工具(F12)确认物品所在的HTML结构(比如物品可能在带特定类的<li>或<div>中),调整选择器确保覆盖首个元素,同时清理空值:
# 替换为实际匹配所有物品的选择器(示例:假设物品在class为"gear-item"的li标签内)
items <- page %>%
  html_elements(".gear-item") %>%
  html_text2() %>%  # 智能处理HTML中的换行、空白
  str_squish() %>%  # 去除多余空格、换行
  Filter(function(x) x != "", .)  # 过滤空字符串
  1. 构建指定行数的数据框
    取前10个有效物品(若不足10则按实际数量),转为数据框:
top_10_items <- head(items, 10)
df_wyatt <- data.frame(Item = top_10_items, row.names = NULL)

二、处理无编号列表形式的Brooke & Dave Whipple页面

针对无序列表(<ul>)结构的内容,只需调整选择器匹配<ul>下的<li>元素,步骤如下:

  1. 获取页面并提取无序列表项
url_bd <- "https://www.history.com/shows/alone/cast/brooke-and-dave-whipple"
page_bd <- read_html(url_bd)

# 匹配目标无序列表的所有列表项(需确认目标ul的类/id,避免匹配无关列表)
bd_items <- page_bd %>%
  html_elements("ul.gear-list li") %>%  # 替换为实际目标ul的选择器
  html_text2() %>%
  str_squish() %>%
  Filter(function(x) x != "", .)
  1. 构建数据框
top_10_bd <- head(bd_items, 10)
df_bd <- data.frame(Item = top_10_bd, row.names = NULL)

关键注意事项

  • 必须通过浏览器开发者工具查看目标页面的真实HTML结构,调整选择器至精准匹配目标物品节点,这是解决爬取遗漏问题的核心。
  • html_text2()相比html_text()能更好处理HTML中的格式空白,减少无效内容的产生。

内容的提问来源于stack exchange,提问作者bill999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:07:08