2

Hoover をスクラップするために、phantomjs スクリプトを作成しました。以下は私の流れです:

1:Nodejs API を使用してデータベースからデータを取得します。

2:一度に 10 行をフェッチし、これらの行を 1 つずつ Web サイトに渡し、それを破棄します (問題はここにあります。どういうわけか、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);
}

sendToServerこれでcasper.evaluate、スクリプトから呼び出すことができます。

そして、これを受信アプリに含めることを忘れないでください (または、このモジュールを参照してください)。

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

そうしないと、ajax が失敗します。CORS ヘッダーも返す OPTIONS ルートを追加する必要がある可能性があります。これに対する別の解決策は、コマンド ライン スイッチを使用して PhantomJS のクロスオリジン チェックを無効にすることです。

于 2013-09-20T13:08:00.140 に答える