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

使用R网页爬取:无法找到下载URL及模拟下载方法问询

用R自动爬取并下载目标网页的Excel文件

方法一:抓取真实下载接口(推荐,效率更高)

这类动态生成的下载按钮,背后都是调用后端接口生成文件,你可以通过浏览器开发者工具抓包获取真实下载链接:

  1. 打开目标网页,按F12启动开发者工具,切换到Network标签,勾选「Preserve log」(保留日志)。
  2. 点击页面上的下载按钮,在Network列表里找到新出现的请求(通常是GET请求,响应类型为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)。
  3. 复制该请求的Request URL,这就是直接的文件下载链接。

拿到链接后,用R的httr包直接下载:

library(httr)

# 替换为你抓包得到的真实下载URL
download_url <- "https://example.com/path/to/generated/file.xlsx"
save_path <- "stockholm_prisutveckling.xlsx"

# 发送请求并保存文件,若需要Headers参数(如Cookie、User-Agent)可添加到GET函数中
GET(download_url, 
    write_disk(save_path, overwrite = TRUE),
    add_headers(
        "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
        "Cookie" = "这里替换成抓包得到的Cookie内容"
    )
)

方法二:模拟浏览器点击下载(适合复杂动态页面)

如果抓包遇到困难,可使用RSelenium模拟浏览器操作点击按钮:

  1. 先安装依赖:确保Chrome浏览器已安装,且ChromeDriver版本与浏览器匹配(需下载对应版本的ChromeDriver)。
  2. 运行以下R代码:
library(RSelenium)

# 启动Chrome会话,port可根据实际情况调整
driver <- rsDriver(browser = "chrome", port = 4444L, chromever = "匹配你的Chrome版本号")
remDr <- driver[["client"]]

# 打开目标网页
remDr$navigate("https://www.maklarstatistik.se/omrade/riket/stockholms-lan/stockholm/#/bostadsratter/arshistorik-prisutveckling")

# 等待页面完全加载(根据网络情况调整等待时间)
Sys.sleep(6)

# 定位下载按钮(可通过浏览器开发者工具获取按钮的XPath或CSS选择器)
# 示例XPath:匹配包含"Ladda ner"文本的按钮
download_btn <- remDr$findElement(using = "xpath", value = "//button[contains(text(), 'Ladda ner')]")
download_btn$clickElement()

# 等待文件下载完成
Sys.sleep(12)

# 关闭会话
remDr$close()
driver$server$stop()

注意事项

  • 抓包时如果请求需要验证(如Cookie、Token),必须将这些参数添加到R的请求头中,否则可能返回403或无效文件。
  • RSelenium的ChromeDriver版本必须与本地Chrome版本严格对应,否则会启动失败。
  • 动态生成的下载链接可能有有效期,若定期爬取需每次重新抓包或通过接口动态获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:50:19