2

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

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

2:一次我获取 10 行,一次将这些行传递给网站,将其报废(问题就在这里。我想以某种方式将 Scrapped 的结果存储到一个数组或其他东西中,然后将此数据传递回节点 API 以在 Azure 中更新数据库)。

现在,我可以使用 nodejs API 从 azure 获取数据,也可以使用 phantomjs 报废我唯一的问题是如何将结果存储在临时存储或数组中,然后可以将其传递给 nodejs API 以在 azure 中更新数据库。

4

1 回答 1

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);
}

现在你可以从你的脚本中调用sendToServerwith 。casper.evaluate

请记住将其包含在您的接收应用程序中(或查看此模块):

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

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

于 2013-09-20T13:08:00.140 回答