You need to enable JavaScript to run this app. 无法通过rvest与follow_link实现网页爬取自动化 求批量爬取方案
优惠活动
大模型
产品
解决方案
定价
更多

无法通过rvest与follow_link实现网页爬取自动化 求批量爬取方案

全流程自动化爬取实现方案

核心问题解决逻辑

你之前手动输入姓名匹配follow_link的模式完全可以替换,结合你已经发现的「所有资料页链接类名为td-name」的线索,根本不需要人工逐条录入文本匹配,直接通过类名批量提取链接地址即可,同时解决xpath匹配不准、分页手动跳转的问题。

分步实现代码

1. 依赖加载

所有爬取操作基于rvest包实现,不需要额外加载复杂爬虫框架:

library(rvest)
library(dplyr)
library(purrr)
library(stringr)

2. 封装单列表页爬取函数

这个函数会自动从当前列表页抓取所有td-name类下的详情链接,自动跳转提取字段,不需要手动输入任何姓名:

# 输入参数:列表页完整URL;输出:当前页所有样本的结构化数据
crawl_single_list_page <- function(list_page_url) {
  # 建立当前列表页的会话
  current_list <- html_session(list_page_url)
  
  # 自动提取当前页所有详情页链接,替代原来手动follow_link的操作
  all_profile_links <- current_list %>% 
    html_nodes('.td-name a') %>% # 直接匹配你找到的类名,不需要匹配链接文本
    html_attr('href')
  
  # 批量遍历每个详情链接,提取目标字段
  map_dfr(all_profile_links, function(profile_link) {
    # 跳转至详情页
    profile_detail <- current_list %>% jump_to(profile_link)
    
    # 在这里补充你需要提取的所有字段,比如姓名、定价、工作者特征
    tibble(
      name = profile_detail %>% html_nodes('h1') %>% html_text(trim = T),
      # 示例:替换成你实际需要的字段节点,比如定价的类、特征描述的类
      # avg_price = profile_detail %>% html_nodes('.你找到的定价类名') %>% html_text(trim = T),
      scraped_timestamp = Sys.time()
    )
    
    # 加随机延迟,避免请求过快被封IP
    Sys.sleep(runif(1, 1, 2))
  }, .progress = T)
}

3. 批量处理全量分页,覆盖2000个样本

你之前手动拼接page=2的逻辑可以批量生成,不需要逐页手动访问:

  • 先打开第一页的分页导航,数清楚总共有多少个分页(比如每页20条样本,2000条就是100页)
  • 按照站点的分页URL规则,循环生成所有分页的地址,批量运行爬取函数
# 替换成你实际统计的总页码数
total_page_count <- 100

# 按照站点的URL规则生成全部分页链接
all_list_pages <- str_glue(
  "https://www.theeroticreview.com/reviews/newreviewsList.asp?Valid=1&mp=0&SortBy=3&searchreview=1&gCity=region1-us-rhode-island&gDistance=0&gCityName=Rhode%20Island%20(State)&page={1:total_page_count}"
)

# 合并所有分页的爬取结果,形成完整数据集
full_research_dataset <- map_dfr(all_list_pages, crawl_single_list_page)

常见问题修复

  • 关于"no links have text with"报错:完全使用类名匹配提取链接的方式后,不再依赖链接文本匹配,这个报错会彻底消失
  • 关于xpath匹配不准:优先使用CSS类选择器(即html_nodes('.类名')的写法),比手动拼接的xpath兼容性更高;如果必须使用xpath,直接在浏览器开发者工具里选中目标元素,右键复制现成的xpath即可,不要手动编写
  • 反爬风险:请求间隔设置1-2秒的随机延迟,不要短时间高频访问站点,避免IP被封禁

爬取过程请严格遵守站点的访问规则,研究数据仅用于学术用途,严格遵循研究伦理要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 06:45:00