2016-07-11 2 views
3

私はウェブサイトにフォームを提出しなければならない小さなプロジェクトに取り組んでいます。 しかし、ウェブサイトはonclickイベントを使用してフォームを送信しています(javascriptを使用)。どのように私はpythonでonclickイベントをシミュレートできますか?

  1. onclickイベントはどのようにしてPythonでシミュレートできますか?

  2. どのモジュールを使用できますか?私はseleniummechanizeモジュールについて聞いたことがあります。しかし、どちらのモジュールを使うことができますか、どちらのモジュールを使うことができますか?

私はウェブスクレイピングとオートメーションには新しいです。だから、非常に役に立ちます。

ありがとうございます。

+0

これはセレンで行うことができます。私は機械化について知らない。 – Greg

+1

何を試しましたか?結果は何でしたか?良い質問をする方法のヘルプトピックをお読みください。あなた自身の問題を研究し、コードサンプルなどを見つけ、問題を解決するためのコードを書く必要があります。あなたがすべてを行い、まだそれを理解できない場合は、あなたの質問を編集し、あなたが行った研究からメモを追加してください。あなたが試したコードは[mcve]に減らしました。エラーメッセージなど。関連するHTMLを含め、HTMLとコードを適切にフォーマットすることも非常に重要です。 – JeffC

答えて

3

ウェブページでonclickのイベントをシミュレートする際に、銀色の弾丸はありません。かなりユースケース固有のものですが、ここではいくつかのポイントとガイドラインがあります。一般的に

、二つのアプローチがあります。

  • 利用のブラウザの開発者向けツール、ネットワークタブを開くには、クリックをすると、サーバーに送信されているものを要求ご覧ください。次に、Pythonでこのリクエストをシミュレートします(例:requests)。 onclickを実行すると、実行するJavaScript mechanizecannot doを必要とするため、あなたが特定の要素を見つけるだろう実際のブラウザを起動し、/実行されないでしょう.click() method

mechanizeを経由してクリックします

  • 使用seleniumは、onclick機能をトリガーします。

  • 2

    理想的には、この種のケースでボタンをクリックする必要はありません。

    あなたが必要とするのは、送信ボタンをクリックしたときにフォームがリクエストを送信するWebサービスを確認することだけです。

    ブラウザで開発者のコ​​ントロールを開くには、[ネットワーク]タブに移動し、[ログを保存]を選択します。今すぐフォームを手動で送信し、最初に送信されたxhr GET/POST要求を探します。これは90%のPOST要求になります。

    リクエストパラメータでリクエストを選択すると、フォームの送信中に入力した値が表示されます。ビンゴ!!

    これで、リクエストを使用してPythonコード内の関連するリクエストヘッダーとパラメータでこのリクエストを模倣するだけで済みます。とWooshh!

    希望します。

    関連する問題