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