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

使用R语言Rvest提取麦当劳产品下拉菜单URL的技术方案咨询

使用R的rvest提取麦当劳产品下拉菜单中的URL

静态渲染页面(无JS动态加载)

如果目标页面的下拉菜单是静态HTML渲染的,直接用rvest就能完成提取,步骤如下:

  1. 安装并加载依赖包
# 首次使用先安装
install.packages(c("rvest", "httr"))
library(rvest)
library(httr)
  1. 获取网页内容
    替换下方target_url为你要爬取的麦当劳产品页面地址:
target_url <- "你的目标麦当劳页面URL"
page <- read_html(target_url)
  1. 定位下拉菜单的链接元素
    打开浏览器开发者工具(F12),选中下拉菜单里的产品链接,复制对应的CSS选择器(比如截图里的下拉菜单,可能选择器是.dropdown-content a或类似,需根据实际页面调整)。用该选择器定位所有链接:
# 替换成你从开发者工具拿到的CSS选择器
dropdown_links <- page %>% html_elements("这里填实际的CSS选择器")
  1. 提取并整理URL
# 提取href属性(即链接地址)
menu_urls <- dropdown_links %>% html_attr("href")

# 过滤空值,并把相对URL转为绝对URL
menu_urls <- menu_urls[!is.na(menu_urls)]
menu_urls <- url_absolute(menu_urls, target_url)

# 查看结果
print(menu_urls)

动态渲染页面(下拉菜单由JS生成)

如果下拉菜单是通过JavaScript动态加载的,read_html无法获取渲染后的元素,这时需要用RSelenium模拟浏览器行为:

  1. 安装并加载RSelenium
install.packages("RSelenium")
library(RSelenium)
  1. 启动浏览器驱动(以Chrome为例,需提前安装Chrome和对应版本的chromedriver)
# 启动驱动,端口可自行调整
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]
  1. 访问页面并等待加载
remDr$navigate(target_url)
# 等待下拉菜单加载完成,时间可根据页面速度调整
Sys.sleep(3)
  1. 提取链接
# 同样使用开发者工具获取的CSS选择器
dropdown_elements <- remDr$findElements(using = "css selector", value = "这里填实际的CSS选择器")
menu_urls <- sapply(dropdown_elements, function(x) x$getElementAttribute("href"))

# 清理结果
menu_urls <- unlist(menu_urls)
menu_urls <- menu_urls[!is.na(menu_urls)]
  1. 关闭驱动
remDr$close()
driver$server$stop()

注意事项

  • 务必遵守目标网站的robots.txt规则和使用条款,避免过度请求导致IP被封禁
  • CSS选择器需要根据实际页面结构调整,开发者工具的「复制选择器」功能可直接生成可用的选择器
  • 如果遇到反爬机制,可尝试添加请求头(用httr::add_headers())或调整请求频率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:15:45