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

使用Python Requests/Selenium自动下载MCA网站文件的解决方案

解决印度MCA网站文件下载的Requests代码问题

这类政府网站通常会校验会话状态,直接请求下载链接时因为缺少浏览器会话中的必要Cookie,会被服务器拒绝。解决方法是先通过会话访问目标页面获取Cookie,再发起下载请求。

以下是可运行的Python代码:

import requests

# 目标页面和下载链接
base_url = "https://www.mca.gov.in/content/mca/global/en/data-and-reports/company-llp-info/incorporated-closed-month.html"
download_url = "https://www.mca.gov.in/bin/dms/getdocument?mds=kSK4UVGwah4CaBAtANCECQ%253D%253D&type=download"

# 创建会话对象,维持Cookie
session = requests.Session()

# 先访问主页面,获取会话Cookie
try:
    session.get(base_url, timeout=10)
except requests.exceptions.RequestException as e:
    print(f"访问主页面失败: {e}")
    exit()

# 发起下载请求
try:
    response = session.get(download_url, stream=True, timeout=10)
    response.raise_for_status()  # 检查请求是否成功

    # 从响应头获取文件名,或者自定义文件名
    filename = "mca_data_file.xlsx"  # 可根据实际文件类型修改后缀
    with open(filename, "wb") as f:
        for chunk in response.iter_content(chunk_size=8192):
            f.write(chunk)
    print(f"文件已成功保存为: {filename}")
except requests.exceptions.RequestException as e:
    print(f"下载失败: {e}")

关键说明

  • 使用requests.Session():维持会话状态,确保第一次访问主页面获取的Cookie能被后续下载请求复用
  • stream=True:针对大文件,避免一次性将整个文件加载到内存,分块写入更高效
  • response.raise_for_status():主动触发HTTP错误(比如403、500),方便排查问题

如果下载链接是临时生成的(比如mds参数会过期),需要每次运行时先从主页面解析最新的下载链接,而不是硬编码固定链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:16:08