使用requests下载PDF失败

0 投票
1 回答
23 浏览
提问于 2025-04-12 12:10

我写了一段代码,用来通过一个链接下载一个PDF文件,使用的是请求库。

import requests

url = "https://disclosure.bursamalaysia.com/FileAccess/apbursaweb/download?id=231746&name=EA_DS_ATTACHMENTS"

response = requests.get(url)

with open("EA_DS_ATTACHMENTS.pdf", "wb") as f:
    f.write(response.content)

print("PDF downloaded successfully!")

当然,这段代码并没有成功。它下载的PDF文件是无法打开的。我怀疑可能是因为那个链接不是一个正确的PDF下载链接,但我也不太确定,因为我对这些还很陌生。

1 个回答

0

当你使用请求的时候,它返回了一个403的响应。这看起来是因为请求的头部信息中的用户代理被阻止了。你可以使用自定义的头部信息,模仿你浏览器的用户代理,这样就可以获取到PDF文档了。

import requests

url = (
    'https://disclosure.bursamalaysia.com/FileAccess/apbursaweb/download?'
    'id=231746&name=EA_DS_ATTACHMENTS'
)

res_bad = requests.get(url)
print(res_bad, res_bad.request.headers)

# prints:
# <Response [403]> {'User-Agent': 'python-requests/2.31.0', 'Accept-Encoding': 
# 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}

# this is the FireFox user agent
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) '
                         'Gecko/20100101 Firefox/124.0'}

res_good = requests.get(url, headers=headers)
with open("EA_DS_ATTACHMENTS.pdf", "wb") as f:
    f.write(res.content)

撰写回答