Webscraping下载独特的PDF文件

时间:2016-12-23 02:28:15

标签: python excel pdf

每季度我必须经常从150多个网站下载300多个pdf,而且我已经开始认为必须使用python自动执行此操作。这些PDF每季度发布一次,并详细说明共同基金在上一季度的表现。 90%的时间,这些PDF被称为季度评论'或者'评论',所以我想要做的是在python中编写一个脚本来搜索特定于基金的网址(https://www.pimco.com/investments/mutual-funds/total-return-fund/inst)以获取关键字'评论',找到该链接,然后下载生成的PDF文件。

我还想将下载文件命名为与正确的共同基金名称一致。现在我一直在努力的是一个excel电子表格。在A栏中,我有适当的共同基金名称。在B栏中,我有共同基金URL。

这可能吗?

1 个答案:

答案 0 :(得分:0)

就我个人而言,我发现使用CaspjerJS和PhantomJS从外部网站下载文件更容易,因为您可以将javascript代码注入页面以获取所需的元素。

Here is the casperjs documentation

以下是我从教授网页下载讲座并将其下载到桌面的一些代码:

var casper = require('casper').create({verbose: true , logLevel: "debug" });
var url = "https://www.cs.rit.edu/~ib/Classes/CSCI264_Fall16-17/assignments.html";
var fs = require('fs');
casper.start(url);
var elements; 
casper.then(function(){
    elements = this.evaluate(function(){ 
        var pdfs =  document.querySelectorAll('body ul li a'); 
        return Array.prototype.map.call(pdfs, function(e) {
            return e.getAttribute('href');
        });
    });
    for(var i = 0; i < elements.length; ++i){
        var url = "" + elements[i] + "";
        if(url.indexOf('pdf') !== -1){
            var file = fs.absolute(url.substring(url.lastIndexOf("/")+1, url.length));          
            this.download(url, file);   
        }
    }   
});


casper.run(function() {
    this.echo('Done.').exit();
});

当然,如果您在使用python时已经死定,那么完全忽略它。否则,祝你好运CasperJS脚本。