Python 使用请求下载.pdf会导致文件损坏
我有一个PDF文件,我想下载。我尝试了以下方法:Python 使用请求下载.pdf会导致文件损坏,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,我有一个PDF文件,我想下载。我尝试了以下方法: import requests class Scraper: def __init__(self): """Init the class""" @staticmethod def download(full_url): """Download full url pdf""" with requests.Session() as req: # I
import requests
class Scraper:
def __init__(self):
"""Init the class"""
@staticmethod
def download(full_url):
"""Download full url pdf"""
with requests.Session() as req:
# Init
r = req.get(full_url, allow_redirects=True)
localname = 'test.pdf'
# Download
if r.status_code == 200: #and r.headers['Content-Type'] == "application/pdf;charset=UTF-8":
with open(f"{localname}", 'wb') as f:
f.write(r.content)
else:
pass
但是,下载后,当我尝试在计算机上打开它时,我会收到以下消息:
“无法打开[FILENAME].pdf,因为它不是受支持的文件。”
文件类型或因为文件已损坏(…)”
- 这是什么原因?是否因为您第一次访问此页面时被重定向,需要选择一些首选项
- 我们如何解决这个问题
下载所需的参数,就好像您已经导航到了,您将看到需要单击继续才能开始下载。bacground中正在发生的事情是使用以下参数获取到后端的请求?switchLocale=y&siteEntryPassthrough=true
以启动下载
您可以在浏览器中的developer tools
下查看,并导航到网络选项卡
部分
导入请求
参数={
“switchLocale”:“y”,
“siteEntryPassthrough”:“true”
}
def main(url,参数):
r=requests.get(url,params=params)
以open(“test.pdf”,“wb”)作为f:
f、 写作(r.content)
主要(”https://www.blackrock.com/uk/individual/literature/annual-report/blackrock-index-selection-fund-en-gb-annual-report-2019.pdf“,参数)
实际上,您还没有传递启动下载所需的参数,就好像您已经导航到了,您将看到需要单击继续才能开始下载。bacground中正在发生的事情是使用以下参数获取到后端的请求?switchLocale=y&siteEntryPassthrough=true
以启动下载
您可以在浏览器中的developer tools
下查看,并导航到网络选项卡
部分
导入请求
参数={
“switchLocale”:“y”,
“siteEntryPassthrough”:“true”
}
def main(url,参数):
r=requests.get(url,params=params)
以open(“test.pdf”,“wb”)作为f:
f、 写作(r.content)
主要(”https://www.blackrock.com/uk/individual/literature/annual-report/blackrock-index-selection-fund-en-gb-annual-report-2019.pdf“,参数)
好的,那么你需要事先知道这些类型的参数吗?@JohnAndrews。这是服务器端预定义的参数。除非您实施机器学习
模型来处理所有情况,例如遵循单击按钮
或查找下载
单词的框架
。漫长的讨论:p我们希望有一天能进行这样的讨论:)@JohnAndrews将是你完成这项任务的最好朋友,这是一个很好的参考。但是,如何定义pdf是否已正确下载?这将是一个很好的模型输入,能够知道它是否失败或成功。好的,那么你需要事先知道这些类型的参数吗?@JohnAndrews。这是服务器端预定义的参数。除非您实施机器学习
模型来处理所有情况,例如遵循单击按钮
或查找下载
单词的框架
。漫长的讨论:p我们希望有一天能进行这样的讨论:)@JohnAndrews将是你完成这项任务的最好朋友,这是一个很好的参考。但是,如何定义pdf是否已正确下载?这将是一个很好的模型输入,能够知道它是否失败或成功。