2013-08-09 2 views
1

Есть ли способ использовать PhantomJS для очистки данных, затем проанализировать результаты с помощью nodejs XPath и DOM, а затем сохранить в MySQL?Использовать PhantomJs, Nodejs и MySQL

Я установил как ядро ​​PhantomJS, так и модуль PhantomJS Node, но попытался запустить Node из уровня оболочки, чтобы выполнить скребок, а затем настроить cronjobs для запуска их по расписанию.

+2

Да, это возможно, есть [модули, которые интегрируют Phantom.JS с Node.js] (https: // GitHub .com/sgentle/phantomjs-узел). Я думаю, вам может потребоваться задать более конкретный вопрос, если вам нужен более конкретный ответ :) –

ответ

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); 
}); 
Смежные вопросы