微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用请求模块从 aspx 站点下载 zip 文件

如何解决使用请求模块从 aspx 站点下载 zip 文件

我正在尝试使用请求模块下载 zip 文件。如果我运行此代码,它会在我的机器上创建一个 zip 文件,但它只是一个错误页面的 HTML。如果我在浏览器中输入 URL,它会正确下载压缩文件

import requests
zipurl = "https://www.dallascad.org/ViewPDFs.aspx?type=3&id=\\DCAD.ORG\WEB\WEBDATA\WEBFORMS\data%20products\DCAD2021_CURRENT.zip"
zname =  "DCAD2021_CURRENT.zip"
resp = requests.get(zipurl)
zfile = open(zname,'wb')
zfile.write(resp.content)
zfile.close()  

解决方法

TLDR:您提供的 zipurl 在浏览器中有效,因为浏览器正在编码和转义一些字符。正确的网址如下:

import requests

params = {
    'type': '3','id': '//DCAD.ORG/WEB/WEBDATA/WEBFORMS/data products/DCAD2021_CURRENT.zip',}

response = requests.get('https://www.dallascad.org/ViewPDFs.aspx',params=params) 

确定是这样的:

在打开检查网络选项卡的情况下导航到浏览器中的 zipurl,我将请求复制为 curl。然后我将这个 curl 复制到 https://curl.trillworks.com/ 中,并查看 python 请求是否有效。它做了。然后我删除了标题并验证它仍然有效。然后我比较了两个不同的 url,发现编码/斜线存在一些差异。

requests.utils.unquote(response.url)
'https://www.dallascad.org/ViewPDFs.aspx?type=3&id=//DCAD.ORG/WEB/WEBDATA/WEBFORMS/data+products/DCAD2021_CURRENT.zip'

对比

requests.utils.unquote(zipurl)
'https://www.dallascad.org/ViewPDFs.aspx?type=3&id=\\DCAD.ORG\\WEB\\WEBDATA\\WEBFORMS\\data+products\\DCAD2021_CURRENT.zip'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。