1

有没有办法使用 PhantomJS 来抓取数据,然后用 nodejs XPath 和 DOM 解析结果,然后保存到 MySQL 中?

我已经安装了 PhantomJS 核心和 PhantomJS Node 模块,但尝试从 shell 级别运行 Node 以执行爬虫,然后设置 cronjobs 以按计划运行它们。

4

1 回答 1

2

我尝试了节点和 PhantomJS 之间的各种桥梁,最后写了另一个桥梁;)。它被称为phridge并提供了一种将函数传递给 PhantomJS 并将结果返回给节点的方法:

// node
phantom.run("h1", function (selector, resolve) {
    // this code runs inside PhantomJS

    phantom.addCookie("cookie_name", "cookie_value", "localhost");

    var page = webpage.create();
    page.customHeaders = {
        Referer: "http://google.com"
    };
    page.settings = {
        userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5)"
    };
    page.open("http://www.google.com", function () {
        var text = page.evaluate(function (selector) {
            return document.querySelector(selector).innerText;
        }, selector);

        // resolve the promise and pass 'text' back to node 
        resolve(text);
    });
}).then(function (text) {
    // inside node again
    console.log("The element contains the following text: "+ text);
});
于 2014-05-26T14:04:35.507 回答