有没有办法使用 PhantomJS 来抓取数据,然后用 nodejs XPath 和 DOM 解析结果,然后保存到 MySQL 中?
我已经安装了 PhantomJS 核心和 PhantomJS Node 模块,但尝试从 shell 级别运行 Node 以执行爬虫,然后设置 cronjobs 以按计划运行它们。
我尝试了节点和 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);
});