从 PeerJ 下载 PDF

Download PDF from PeerJ

我正在尝试使用 Python requestsPeerJ. For example, https://peerj.com/articles/1.pdf 下载 PDF。

我的代码很简单:

r = requests.get('https://peerj.com/articles/1.pdf')

但是,返回的 Response 对象显示为 <Response [432]>,表示 HTTP 432 错误。据我所知,该错误代码未分配。

当我检查 r.textr.content 时,有一些 HTML 说这是一个错误 432 并给同一个 PDF 一个 link,https://peerj.com/articles/1.pdf.

我在浏览器中打开 PDF 时可以查看它 (Chrome)。

如何获取实际的 PDF(作为 bytes 对象,就像我应该从 r.content 中获取的那样)?

打开站点时,您提到,我还在我的 firefox 浏览器中打开了开发人员工具,并从那里复制了 http 请求 header,并将其分配给 headers 参数 request.get 函数.

a = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,<em>/</em>;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US,en;q=0.5', 'Connection': 'keep-alive', 'Host': 'peerj.com', 'Referer': 'https://peerj.com/articles/1.pdf', 'Sec-Fetch-Dest': 'document', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-User': '?1', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0'}</p> <p>r = requests.get('https://peerj.com/articles/1.pdf', headers= a)