使用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
相关产品推荐
相关产品推荐

