提取嵌入的 pdf

5 python pdf scrapy

我注意到 docplayer.net 嵌入了许多 pdf 文件。示例:http://docplayer.net/72489212-Excellence-in-prevention-descriptions-of-the-prevention-programs-and-strategies-with-the-greatest-evidence-of-success.html

然而,使用自动化工作流程提取这些 pdf(即下载它们)的过程是如何进行的呢?

Pau*_*nan 10

正如您所指出的,单独获取 URL 会导致 403 Forbidden。您还需要两个标头,“s”和“ex”。

要使用 Firefox 获取这些内容,请在检查器中打开“网络”选项卡,然后选择“复制...复制为 cURL”。生成的curl命令将是浏览器为获取资源而发出的确切请求。除了“s”和“ex”标头之外,您还会注意到还有一个“Range”标头——请确保删除此标头,除非您只想下载文件的一部分。其余标头不相关。

我不会在这里发布生成的 PDF 直接链接,但我确实对其进行了测试,并且能够使用此技术下载整个文件。


Tom*_*art 0

您可以在网络/XHR 选项卡下的浏览器开发人员工具中注意到正在请求实际文档。在您的特定情况下,它位于 URL http://docplayer.net/storage/75/72489212/72489212.pdf上。现在您可以尝试查看页面源代码,看看是否可以以某种方式推断出该 URL。看起来 XPath//iframe[@id="player_frame"]/@src可能会有所帮助。我没有检查过其他页面,但我认为这样的东西可能有效(你的parse方法的一部分):

...
url_template = 'http://docplayer.net/storage/{0}/{1}/{1}.pdf'
ids = response.xpath('//iframe[@id="player_frame"]/@src').re(r'/docview/([^/]+)/([^/]+)/')
file_url = url_template.format(*ids)
yield scrapy.Request(file_url, callback=self.parse_pdf)
...
Run Code Online (Sandbox Code Playgroud)