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

使用rvest网页爬取时如何避免出现character(0)

问题原因与解决方案

核心问题

你用rvest直接爬Kaggle数据集页面失败,是因为:

  1. Kaggle的数据集页面是动态渲染的,read_html只能抓取初始静态HTML,你用SelectorGadget定位的.hdFafr元素是JavaScript加载后才生成的,静态源码里根本没有,所以返回character(0)。
  2. 更重要的是,这个页面是数据集的下载入口,实际品种数据是封装在CSV文件里的,没必要爬网页,直接读取数据文件效率更高。

推荐方案:直接读取数据集文件

  1. 去该数据集页面下载CSV文件(比如leafly-cannabis-strains.csv)。
  2. 用R读取文件并提取品种名称:
library(readr)
# 替换成你本地的文件路径
weed_data <- read_csv("leafly-cannabis-strains.csv")
# 提取品种列(列名以实际CSV为准,比如可能叫Strain)
strain_name <- weed_data$Strain
head(strain_name)

备选方案:爬动态页面(不推荐)

如果一定要爬网页,需要用能处理JavaScript的工具(比如RSelenium)模拟浏览器加载页面:

library(RSelenium)
library(rvest)

# 启动Chrome驱动(需提前安装Chrome和对应版本的chromedriver)
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("https://www.kaggle.com/datasets/corykjar/leafly-cannabis-strains-dataset?resource=download")
# 等待页面加载完成
Sys.sleep(5)

# 获取加载后的页面源码
page_source <- remDr$getPageSource()[[1]]
weed_data <- read_html(page_source)

# 提取品种名称(注意:Kaggle页面结构可能随时变化,需重新确认选择器)
strain_name <- weed_data %>%
  html_nodes(".hdFafr div:nth-child(2)") %>%
  html_text()

print(strain_name)

# 关闭浏览器和驱动
remDr$close()
driver$server$stop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:42:48