无法使用javascript从Web网址获取文本数据

时间:2019-05-29 09:43:38

标签: javascript selenium protractor

我需要从网址(http://www.africau.edu/images/default/sample.pdf)中提取文本数据

我用了两个node_module。

1)爬虫请求

  it('Read Pdf Data using crawler',function(){
        const crawler = require('crawler-request');
        function response_text_size(response){
            response["size"] = response.text.length;
            return response;
        }
        crawler("http://www.africau.edu/images/default/sample.pdf",response_text_size).then(function(response){
            // handle response

            console.log("Reponse =" + response.size);
        });

    });

发生这种情况将无法在控制台上打印任何内容。

2)pfd2json / pdfparser

it('Read Data from url',function(){
        var request = require('request');
        var pdf = require('pfd2json/pdfparser');
        var fs = require('fs');
        var pdfUrl = "http://www.africau.edu/images/default/sample.pdf";
        let databuffer = fs.readFileSync(pdfUrl);
        pdf(databuffer).then(function(data){
            var arr:Array<String> = data.text;
            var n = arr.includes('Thursday 02 May');
            console.log("Print Array " + n);
        });

    });
  

我能够从本地路径访问数据,但无法从url中提取数据。

1 个答案:

答案 0 :(得分:0)

这里的问题是您正在使用fs模块(文件系统)来读取远程服务器上的文件。

您还输错了pdf2json模块的内容,应该给您一个错误?

您确实需要request模块。该模块将使访问该远程文件成为可能。这是执行此操作的一种方法:

it('Read Data from url', function () {
    var request = require('request');
    var PDFParser = require('pdf2json');

    var pdfUrl = 'http://unec.edu.az/application/uploads/2014/12/pdf-sample.pdf';

    var pdfParser = new PDFParser(this, 1);

    // executed if the parser fails for any reason
    pdfParser.on("pdfParser_dataError", errData => console.error(errData.parserError));
    // executed when the parser finished
    pdfParser.on("pdfParser_dataReady", pdfData => console.log(pdfParser.getRawTextContent()));

    // request to get the pdf's file content then call the pdf parser on the retrieved buffer
    request({ url: pdfUrl, encoding: null }, (error, response, body) => pdfParser.parseBuffer(body));
});

这将使您可以在程序中加载遥远的.pdf文件。

如果您想执行更多操作,建议您查看pdf2json documentation。解析器完成读取数据后,这将仅输出.pdf文件的文本内容。