Phantomjs将抓取的数据写入数据库

时间:2013-07-24 18:58:58

标签: phantomjs

我写了一个phantomjs脚本来废除胡佛。 以下是我的流程:

1:使用Nodejs API从数据库获取数据。

2:在我获取10行时,将这些行一次传递给网站,废弃它(问题就在这里。我想知道将Scrap的结果存储到数组中,然后将这些数据传回给用于在Azure中更新数据库的节点API。

现在我能够使用nodejs API从azure获取数据并且能够使用phantomjs进行废弃我唯一的问题是如何将结果存储在tempopary存储或数组中,然后可以将其传递给nodejs API以更新数据库在天蓝色。

1 个答案:

答案 0 :(得分:4)

(我正在使用CasperJS - 它在PhantomJS上添加了一个图层,但我认为它也可以在PhantomJS中使用)

您可以让CasperJS使用您要存储的数据对您的后端进行AJAX调用。

让CasperJS为其访问的每个页面添加内容脚本:

var casper = require('casper').create({ clientScripts: ['content.js'] });

然后,在content.js中:

function sendToServer(theData){
  var xhr2 = new XMLHttpRequest();
  xhr2.open('POST', your_server_url, true);
  xhr2.send(theData);
}

现在,您可以通过脚本中的sendToServer致电casper.evaluate

请务必将此信息包含在您的接收应用中(或参见this module):

res.writeHead(200, {
  'Access-Control-Allow-Origin': '*'
});

否则你的ajax会失败。您可能还需要添加返回CORS标头的OPTIONS路由。另一个解决方案是使用命令行开关禁用PhantomJS上的跨源检查。