【问题标题】:Extract embedded pdf提取嵌入的pdf
【发布时间】:2018-08-10 09:03:12
【问题描述】:

我注意到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(即下载它们)的过程是如何工作的?

【问题讨论】:

    标签: python pdf scrapy


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您可以在网络/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)
      ...
      

      【讨论】:

      • 谢谢托马斯。您可能会注意到,您包含的 URL 会重定向到一个禁止页面。显然,无法直接访问pdf的源文件。是否有一些会话检查会产生下载 pdf 所需的令牌?
      【解决方案3】:

      打开开发者工具,在inspector中打开Network选项卡,选择“Copy...Copy as PowerShell”,最后添加-OutFile "C:\pdf.pdf"。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-05
        • 2018-06-16
        • 2019-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-26
        相关资源
        最近更新 更多