我需要从网址(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);
});
});
- 失败:ENOENT:没有此类文件或目录,请打开“ http://www.africau.edu/images/default/sample.pdf”
我能够从本地路径访问数据,但无法从url中提取数据。
答案 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文件的文本内容。