【问题标题】:not able to fetch text data from web url using javascript无法使用 javascript 从 web url 获取文本数据
【发布时间】:2019-05-29 09:43:37
【问题描述】:

我需要从 web url (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 中提取数据。

【问题讨论】:

    标签: javascript selenium protractor


    【解决方案1】:

    这里的问题是您正在使用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 文件的文本内容。

    【讨论】:

    • 我如何从该 pdf 中获取所有文本?
    • @sailxor 我需要做什么我需要console.log中该pdf中的所有文本我如何打印?
    • @dhrusoni 我已经更新了我的答案。这只会在控制台中记录 pdf 的文件内容。如果您想使用此模块做更多事情,您应该查看文档:)
    • 它没有在 console.log 上打印任何东西它只是通过了所有的测试用例。
    • 我编辑了我的代码,我只是将 console.log 放在最后一行,它的工作方式就像魅力......
    猜你喜欢
    • 2020-09-02
    • 2013-10-04
    • 1970-01-01
    • 2021-09-07
    • 2014-05-28
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多