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

如何从终端/Unix Bash、R或Python下载指定网页导出的Excel文件?

当然可以搞定!这个需求本质就是模拟浏览器点击下载按钮的动作,背后其实是发送特定的HTTP请求(可能需要带上会话Cookie、表单数据这些)来触发文件生成和下载。下面我分别给你用Bash(搭配curl)、Python和R的具体实现方案,你可以根据自己熟悉的工具选:

Bash 实现(用curl)

用curl的核心是先获取网站的会话Cookie(这类学术网站通常需要验证会话权限),再发送下载请求:

# 1. 先访问目标搜索结果页面,保存会话Cookie到本地文件
curl -c cookie.txt "http://www.vivc.de/index.php?r=eva-analysis-mikrosatelliten-vivc%2Fresultmsatvar&EvaAnalysisMikrosatellitenVivcSearch%5Bleitname_list%5D=&EvaAnalysisMikrosatellitenVivcSearch%5Bleitname_list%5D%5B%5D=ABADI&EvaAnalysisMikrosatellitenVivcSearch%5BName_in_bibliography%5D="

# 2. 模拟点击EXCEL按钮,发送请求下载文件
# 注意:这里的导出URL是推测的,你需要用浏览器F12抓包看实际请求地址
curl -b cookie.txt -o output.xlsx "http://www.vivc.de/index.php?r=eva-analysis-mikrosatelliten-vivc%2Fexportmsatvar&format=xlsx"

⚠️ 关键提醒:一定要用浏览器开发者工具(F12→网络标签)查看点击“EXCEL Document”时实际发送的请求——比如是GET还是POST,有没有额外的表单参数,把代码里的导出URL替换成抓包到的真实地址。如果是POST请求,要给curl加-d参数传递表单数据。

Python 实现(用requests库)

requests库处理会话和请求非常方便,自动帮你管理Cookie:

import requests

# 初始化会话,自动维护Cookie
session = requests.Session()

# 先访问目标页面,建立有效会话
target_url = "http://www.vivc.de/index.php?r=eva-analysis-mikrosatelliten-vivc%2Fresultmsatvar&EvaAnalysisMikrosatellitenVivcSearch%5Bleitname_list%5D=&EvaAnalysisMikrosatellitenVivcSearch%5Bleitname_list%5D%5B%5D=ABADI&EvaAnalysisMikrosatellitenVivcSearch%5BName_in_bibliography%5D="
session.get(target_url, headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"})

# 发送下载请求(替换为抓包到的真实导出URL)
export_url = "http://www.vivc.de/index.php?r=eva-analysis-mikrosatelliten-vivc%2Fexportmsatvar&format=xlsx"
response = session.get(export_url)

# 保存文件到本地
with open("output.xlsx", "wb") as f:
    f.write(response.content)

print("文件已成功保存为 output.xlsx")

💡 小技巧:如果网站返回403或拒绝请求,大概率是检查了User-Agent,上面代码里已经加了模拟浏览器的UA,你也可以换成自己浏览器的UA。如果导出是POST请求,把session.get()改成session.post(),并传入data={"表单键": "表单值"}。

R 实现(用httr库)

用httr库可以轻松处理会话和HTTP请求:

library(httr)

# 初始化会话句柄,维护Cookie
session_handle <- handle("http://www.vivc.de")

# 先访问目标页面,建立会话
target_url <- "http://www.vivc.de/index.php?r=eva-analysis-mikrosatelliten-vivc%2Fresultmsatvar&EvaAnalysisMikrosatellitenVivcSearch%5Bleitname_list%5D=&EvaAnalysisMikrosatellitenVivcSearch%5Bleitname_list%5D%5B%5D=ABADI&EvaAnalysisMikrosatellitenVivcSearch%5BName_in_bibliography%5D="
GET(target_url, handle = session_handle, add_headers(User-Agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"))

# 发送下载请求(替换为真实导出URL)
export_url <- "http://www.vivc.de/index.php?r=eva-analysis-mikrosatelliten-vivc%2Fexportmsatvar&format=xlsx"
response <- GET(export_url, handle = session_handle)

# 保存文件
write_disk(response, path = "output.xlsx", overwrite = TRUE)

cat("文件已成功保存为 output.xlsx\n")

同样,如果导出是POST请求,把GET()换成POST(),并用body=参数传递表单数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:14:15