我注意到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(即下载它们)的过程是如何工作的?
答案 0 :(得分: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)
...
答案 1 :(得分:0)
如您所指出的,仅获取URL会导致403 Forbidden。您还需要两个标头:“ s”和“ ex”。
要使用Firefox获取这些文件,请在检查器中打开“网络”选项卡,然后选择“复制...复制为cURL”。结果得到的curl命令将是浏览器为获取资源而发出的确切请求。除了“ s”和“ ex”标头外,您还将注意到还有一个“ Range”标头-确保删除该标头,除非您只想下载文件的一部分。其余标头不相关。
我不会在此处发布生成的直接链接到PDF,但是我已经对其进行了测试,并且能够使用此技术下载整个文件。