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

使用R爬取数据时出现unexpected symbol语法错误,寻求解决方案

R爬虫错误:unexpected symbol 原因分析与解决办法

错误提示

Error: unexpected symbol in: " name = page %>% html_nodes(".title""

错误原因

  • HTML转义字符干扰:代码中出现的%>%是HTML转义后的管道符,R无法识别该转义字符,导致管道操作中断,代码逻辑被截断,触发unexpected symbol错误。
  • 函数与变量名冲突:定义了名为email的函数,但后续又用email作为变量名存储爬取结果,直接覆盖了函数本身,会导致sapply调用时出现逻辑错误。
  • 链接拼接语法错误:循环中拼接链接时,末尾多了一个多余的引号,导致生成的URL格式无效,影响read_html的正常执行。

解决办法

  1. 替换转义字符:将所有%>%替换为R原生的管道符%>%
  2. 重命名函数避免冲突:把email函数重命名为get_writer_email,防止与变量名冲突
  3. 修正链接拼接:移除链接末尾多余的引号,保证URL格式正确
  4. 优化数据框拼接:用dplyr::bind_rows替代rbind,提升循环中数据框拼接的效率

修正后的完整代码

library(rvest)
library(dplyr)

get_writer_email = function(writer_link) {
  page = read_html(writer_link)
  writer_email = page %>% html_node(".field-type-email a") %>% html_text()
  return(writer_email)
}

writerdata = data.frame()

for (page_result in seq(from = 0, to = 20)) {
  link = paste0("https://www.pw.org/directory/writers?genre=All&translated=All&journal-nid=&identity=15969&work=All&language=English&education=All&retreat=All&agent=All&metroarea%5Bcity_autocomplete%5D=&metroarea%5Bhidden_latitude%5D=&metroarea%5Bhidden_longitude%5D=", page_result)
  page = read_html(link)
  
  name = page %>% html_nodes(".title a") %>% html_text()
  writer_links = page %>% html_nodes(".title a") %>% html_attr("href") %>% paste("https://www.pw.org", ., sep = "")
  
  email_list = sapply(writer_links, FUN = get_writer_email, USE.NAMES = FALSE)
  
  writerdata = bind_rows(writerdata, data.frame(name, email = email_list, stringsAsFactors = FALSE))
  
  print(paste("Page:", page_result))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:10:34