无法使用 python 请求下载 pdf

Posted

技术标签:

【中文标题】无法使用 python 请求下载 pdf【英文标题】:Cannot download pdf using python requests 【发布时间】:2021-02-16 05:19:56 【问题描述】:

我以前可以这样做,但我认为该网站可能已经更新了一些内容,我不确定要更改什么。

URL = "https://www.bursamalaysia.com/misc/missftp/securities/securities_equities_2020-12-10.pdf"
r = requests.get(URL, stream = True)
with open(f"path_to_store_pdfs/KLSE 2020-12-10.pdf", "wb") as fd:
    fd.write(r.content)

当我现在尝试使用上述代码下载数据时,会出现文件,但有一条错误消息显示“Adobe Reader 无法打开……因为它不是受支持的文件类型或文件已损坏”

我的主要任务是执行以下代码,该代码也不起作用并给出错误“PdfReadError: EOF marker not found”。

pdf_file = io.BytesIO(r.content)
pdf_reader = PyPDF2.PdfFileReader(pdf_file)

看来这两个问题都与 pdf 的编码有关,但我是编码新手,不确定是使用了不同的编码还是使用了故意损坏的编码(用于检测机器人)。非常感谢任何帮助或指导。

【问题讨论】:

【参考方案1】:

检查请求状态代码。对我来说,它给出了 503 Service Unavailable。设置用户代理修复它:

import requests
user_agent = "scrapping_script/1.0"
headers = 'User-Agent': user_agent
URL = "https://www.bursamalaysia.com/misc/missftp/securities/securities_equities_2020-12-10.pdf"
r = requests.get(URL, headers=headers, stream = True)
with open("KLSE 2020-12-10.pdf", "wb") as fd:
    fd.write(r.content)

【讨论】:

效果很好!将阅读更多内容,谢谢:)

以上是关于无法使用 python 请求下载 pdf的主要内容,如果未能解决你的问题,请参考以下文章

pdf下载response本地无法

使用 Python 请求模块下载并保存 PDF 文件

如何在 python 中使用 selenium 下载 pdf 文件

无法使用 DOMPDF 下载 pdf

Pdf下载使用java jersey和spring security在给出邮递员的请求时给出错误

使用请求(不是 GET)在 Python 中通过 Post HTTP Request 下载 PDF