使用请求模块从 aspx 站点下载 zip 文件
Using requests module to download zip file from aspx site
我正在尝试使用请求模块下载 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
在浏览器中有效,因为浏览器正在编码和转义某些字符。正确的 url 如下:
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 请求是否有效。它做了。然后我删除了 headers 并验证它仍然有效。所以我比较了两个不同的 url,发现 encoding/slashing.
有一些不同
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'
我正在尝试使用请求模块下载 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
在浏览器中有效,因为浏览器正在编码和转义某些字符。正确的 url 如下:
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 请求是否有效。它做了。然后我删除了 headers 并验证它仍然有效。所以我比较了两个不同的 url,发现 encoding/slashing.
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'