1

AJAX と SESSIONS を含む Web サイト フォーム (オンザフライ) をスクレイピングする必要があります。私は多くの調査を行い、Python::Mechanize であるいくつかの可能な解決策に出くわしました。PHP(私の理解から)AJAXを処理したりフォームを送信したりできないため、PythonとcURLだけではわかりません。

私は、私を恵みに導く可能性のあるスタックであると信じているものを見つけました:)。問題は、これらのパッケージの使い方がまったくわからないことです。

  1. NODEjs をダウンロードしてインストールし、cmd から呼び出すことができます。(すごい)

  2. PhantomJS をダウンロードしてインストールしました (動的にセットアップする方法がわからないため、CMDPATHで手動でロードする必要があります) Windows 7 でこれをセットアップするにはどうすればよいですか? パスを指す場所がわからない。cdDIR

  3. ダウンロードされたCasperJS - DIRに入れます

したがって、phantomjs では、CMD プロンプトで「hello world」をエコーするテスト ファイルを実行できました。そして今、私はここでどうすればよいのかわかりません。-最終的には、これを Web サーバーから (オンザフライで) 実行する必要があるため、Web ページに実装する必要があります。今のところ、CMDから実行してページに移動し、フォームを送信し、結果をスクレイピングしてファイルに書き込みたいと思っています。

誰かがこれを達成する方法のワークフローのように説明してもらえますか?

CasperJS -> このフォームの例を示します。変数を使用して実装し、スクリプトを実行して結果を保存したいと思います。

casper.start('http://some.tld/contact.form', function() {
    this.fill('form#contact-form', {
        'subject':    'I am watching you',
        'content':    'So be careful.',
        'civility':   'Mr',
        'name':       'Chuck Norris',
        'email':      'chuck@norris.com',
        'cc':         true,
        'attachment': '/Users/chuck/roundhousekick.doc'
    }, true);
});

casper.then(function() {
    this.evaluateOrDie(function() {
        return /message sent/.test(document.body.innerText);
    }, 'sending message failed');
});

casper.run(function() {
    this.echo('message sent').exit();
});
4

1 に答える 1

2

PhantomJS をインストールしたら、次の手順を実行します。

  1. デスクトップから [マイ コンピュータ] を右クリックし、[プロパティ] をクリックします。
  2. 左の列にある [システムの詳細設定] リンクをクリックします。
  3. [システムのプロパティ] ウィンドウで、[環境変数] ボタンをクリックします。
  4. PATH 変数を見つけて、[編集] をクリックします。
  5. 変数値の最後に PhantomJS パスを追加します (その前に ; を忘れないでください)。

今のところ、CMD から phantomjs を使用できます。例:phantomjs c:\mywebsite\with\ajax\dopescript.js

これらの手順の後、CasperJS をダウンロードし、PhantomJS フォルダーに配置します。

Ex.: c:\phantomjs\casperjs

CasperJS の PATH 変数に対して前の手順を実行します (最後に \bin を追加)

Ex.: c:\phantomjs\casperjs\bin

CMD から casperjs を試してください。

機能しない場合は、casperjs フォルダーの batchbin ディレクトリに移動し、casperjs.bat をランチします。

次に、このフォルダーから CasperJs を呼び出してみます。(私のために働く)

したがって、今のところ、PhantomJS + CasperJS が必要です。

結果の保存について:

これをスクリプトの先頭に置き、保存する必要があるデータがどこにあるかvar fs = require('fs');を呼び出します。

fs.write('result.html', myData);myData

FS の詳細については、 PhantomJS ファイル システムを参照してください。

于 2014-02-26T04:49:05.660 に答える