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

如何用Python下载需身份验证的网页中链接的.dat文件

如何用Python下载需身份验证的网页中链接的.dat文件

嗨,你已经走对了大半流程——身份验证这步没问题,但最后下载文件的时候漏了最关键的一步:把请求获取到的文件内容写入到你创建的文件里!

你现在的代码里,open(filename, 'wb')只是创建了一个空的文件对象,但没有把requests.get返回的响应内容写进去,所以才会输出<_io.BufferedWriter name='data_file_of_interest.dat'>这个文件对象,而不是实际的文件内容。

给你修正后的代码,直接就能用:

import requests

# 身份验证信息
username = 'user'
password = 'pass'

# 重要:这里的url要替换成.dat文件的**直接下载链接**,不是网站首页哦
file_url = 'location/of/website/data_file_of_interest.dat'
filename = 'data_file_of_interest.dat'

# 发送带身份验证的GET请求,获取文件内容
r = requests.get(file_url, auth=(username, password), allow_redirects=True)

# 可选但推荐:检查请求是否成功,避免写入无效内容
if r.status_code == 200:
    # 用with语句自动管理文件句柄,安全又省心
    with open(filename, 'wb') as f:
        f.write(r.content)
    print(f"文件 {filename} 下载完成!")
else:
    print(f"下载失败,状态码:{r.status_code}")

还要提醒你几个小细节:

  • 务必确认file_url是.dat文件的直接下载地址,不是包含文件链接的网页地址。如果之前的url是网站首页,得找到点击下载按钮时实际跳转的那个文件链接才行。
  • 用with open的写法比直接open更稳妥,它会自动帮你关闭文件,不会出现资源泄漏的问题。
  • 加上状态码检查能帮你快速排查问题:比如状态码401就是身份验证失败,404就是文件地址写错了。

如果你的url其实是包含文件下载链接的网页地址,那还需要多一步:先爬取这个页面,提取出.dat文件的直接下载链接。比如用BeautifulSoup解析页面里的<a>标签,找到对应文件的href属性,再把这个href作为file_url去请求就行。

备注:内容来源于stack exchange,提问作者uSER_23

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:00:33