无法使用 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的主要内容,如果未能解决你的问题,请参考以下文章