使用Phantom JS的节点JS来抓取动态页面

时间:2016-05-21 22:47:22

标签: javascript node.js web-scraping phantomjs

我是一名Java开发人员,但很少使用javascript。我正在寻找开发一个小的Node JS应用程序来解析动态网页......所以我们需要一些方法来等待页面完全加载。我设法使用hello world app运行节点js项目。

然后我通过PhantomJS节点桥(https://github.com/amir20/phantomjs-node)更新了项目以支持PhantomJS。我能够在我的节点项目中成功运行其中一个(PhantomJS节点网桥)示例(见下文)。虽然这会成功将网页内容写入文件,但内容不完整,因为它不包含动态数据(通过javascript / AJAX检索)。

有人能告诉我下面的代码修改会让它在写入文件之前等到页面完全加载吗?

**编辑 - 只是看到其他用户基本上完全相同的问题,但未得到答复:Dynamic scraping using nodejs and phantomjs

节点js版本6.20,幻影js版本2.1.1,幻像js节点(桥接版本2.1.2)

var phantom = require('phantom');

var sitepage = null;
var phInstance = null;
phantom.create()
.then(instance => {
        phInstance = instance;
        return instance.createPage();
    })
.then(page => {
    sitepage = page;
    return page.open('http://www.somesite.com');
})
.then(status => {
    console.log(status);
    return sitepage.property('content');
})
.then(content => {
    var fs = require('fs');
    fs.writeFile("output.html", content, function(err) {
        if(err) {
            return console.log(err);
        }
    });
    sitepage.close();
    phInstance.exit();
})
.catch(error => {
    console.log(error);
    phInstance.exit(); 
});

0 个答案:

没有答案