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

如何用Python或R批量下载微软投资者页面的docx格式年报?

批量下载微软投资者页面的所有DOCX年报文件

Python 实现方案

先安装所需依赖包:

pip install requests beautifulsoup4

代码实现:

import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

# 目标页面URL
base_url = "https://www.microsoft.com/en-us/Investor/annual-reports.aspx"
# 本地保存文件夹,不存在则自动创建
save_dir = "microsoft_annual_reports"
os.makedirs(save_dir, exist_ok=True)

# 模拟浏览器请求头,规避反爬拦截
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"
}

# 获取页面内容
response = requests.get(base_url, headers=headers)
response.raise_for_status()  # 检查请求是否成功

# 解析HTML页面
soup = BeautifulSoup(response.text, "html.parser")

# 提取所有DOCX文件链接
docx_links = []
for a_tag in soup.find_all("a", href=True):
    href = a_tag["href"]
    if href.endswith(".docx"):
        # 转换为绝对URL
        full_url = urljoin(base_url, href)
        docx_links.append(full_url)

# 批量下载文件
for link in docx_links:
    filename = os.path.join(save_dir, link.split("/")[-1])
    print(f"正在下载: {filename}")
    file_response = requests.get(link, headers=headers)
    file_response.raise_for_status()
    with open(filename, "wb") as f:
        f.write(file_response.content)
    print(f"{filename} 下载完成")

print("所有DOCX文件下载完成")

R 实现方案

先安装所需依赖包:

install.packages(c("rvest", "httr"))

代码实现:

library(rvest)
library(httr)
library(stringr)

# 目标页面URL
base_url <- "https://www.microsoft.com/en-us/Investor/annual-reports.aspx"
# 本地保存文件夹,不存在则自动创建
save_dir <- "microsoft_annual_reports"
if (!dir.exists(save_dir)) {
  dir.create(save_dir)
}

# 模拟浏览器请求头
headers <- 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"
)

# 获取页面内容
page <- GET(base_url, headers)
stop_for_status(page)  # 检查请求是否成功

# 解析HTML页面
html <- content(page, "html")

# 提取所有DOCX文件链接
docx_links <- html_elements(html, "a[href]") %>%
  html_attr("href") %>%
  str_subset("\\.docx$") %>%
  url_absolute(base_url)  # 转换为绝对URL

# 批量下载文件
for (link in docx_links) {
  filename <- file.path(save_dir, basename(link))
  cat(paste0("正在下载: ", filename, "\n"))
  file_response <- GET(link, headers)
  stop_for_status(file_response)
  writeBin(content(file_response, "raw"), filename)
  cat(paste0(filename, " 下载完成\n"))
}

cat("所有DOCX文件下载完成\n")

补充说明

之前参考的PDF下载代码失效,主要原因是未设置合法请求头被反爬拦截,或是链接筛选逻辑不适配DOCX文件。上述代码通过模拟正常浏览器访问,并针对性筛选DOCX后缀链接,同时处理了相对路径转绝对路径的问题,确保能正确获取并下载目标文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:04:59