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

使用rvest爬取Goodreads已读书籍表格报错,求解决方法

解决Goodreads已读书籍表格爬取报错问题

错误原因

你写的//*[@id="booksBody"]是XPath语法,但html_nodes()默认解析的是CSS选择器,这是导致语法报错的核心原因。另外html_table()不需要传入选择器参数,它的作用是提取已选中节点内的表格数据。

正确爬取方法

方法1:使用CSS选择器(推荐)

直接用ID选择器定位表格主体,再提取表格内容:

library(dplyr)
library(rvest)

url <- "https://www.goodreads.com/review/list/4622890?shelf=read"

dat <- read_html(url) %>% 
  html_nodes("#booksBody") %>%  # CSS规则中#对应ID属性
  html_table(header = TRUE)  # 指定第一行作为表头

# 提取列表中的表格数据(html_table返回的是列表格式)
dat <- dat[[1]]

方法2:使用XPath语法

如果坚持用XPath,需要在html_nodes()里明确指定xpath参数:

dat <- read_html(url) %>% 
  html_nodes(xpath = '//*[@id="booksBody"]') %>% 
  html_table(header = TRUE) %>% 
  .[[1]]

补充提示

  • 爬取时注意Goodreads的反爬限制,不要频繁发起请求,避免IP被封禁。
  • 若目标书籍列表存在分页,还需要额外处理分页URL的循环爬取逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:45:35