2016-05-11 3 views
0

私はこの小さなウェブサイトを持っており、リクエストライブラリにフォームを記入したいと思います。問題は、フォームデータを入力してボタンを押す(Enterは機能しない)次のサイトに行くことができないことです。リクエストで「クリックする」ボタン

重要なことは、何らかのクリックボットではできないことです。これは私がグラフィックなしで実行できるようにする必要があります。

info = {'name':'JohnJohn', 
     'message':'XXX', 
     'sign':"XXX", 
     'step':'1'} 

最初の3つのエントリの名前、メッセージ、記号はテキスト領域であり、ステップは私がボタンと考えるものです。

r = requests.get(url) 
r = requests.post(url, data=info) 

print(r.text) 

私は手動でクロムを経由して要求を送信するときにフォームデータは次のようになります。

  • 名:JohnJohn
  • メッセージ:XXX
  • 記号:XXX
  • ステップ:1

ボタンの要素は次のようになります。

<td colspan="2" style="text-align: center;"> 
 
    <input name="step" type="hidden" value="1"> 
 
    <button id="button" type="button" onclick="myClick();" 
 
    style="background-color: #ef4023; width: 80px; font-face: times; font-size: 14pt;"> 
 
     Wyślij 
 
    </button> 
 
</td>

次のサイト私はこれを行う場合は、手動で同じADRESがあります。

+0

リンクを共有できますか? –

答えて

5

あなたが投稿したスナップからわかるように、ボタンをクリックすると、JavaScriptコード、つまりmyClick()というメソッドがトリガーされます。

pythons要求ライブラリを使用してこのことをクリックするのは簡単ではありません。 myClick()の内部で何が起きているのか調べようとすると、もっと運があるかもしれません。私の推測では、ある時点で、HTTPエンドポイントに対してPOST要求が行われるということになります。これを理解できれば、Pythonコードに変換することができます。

これでうまくいかない場合は、Selenium/PhantomJSのようなものを使用することもできます。これにより、頭がいっぱいでスクリプトが可能なブラウザを使用できるようになります。このようなツールを使用すると、実際にフォームとクリックボタンを記入することができます。このso answerを見ることができます。これは、PythonからSelenium + PhantomJSを使用する方法を示しています。

スパム対策フォーラムや[違法行為やその他の不正行為をここに挿入する]などの方法で悪用しないように注意してください。

+0

myClick()内で何が起きているのか、どうすればわかるでしょうか?また、物理的なクリックをエミュレートするようなセレンではないので、ブラウザを開いておく必要がありますか?私はそれを避けたいと思います。 これは主に教育目的のためのものです。私はボット(良いもの)とwebscrapingに興味があります。 – Repcak

+0

PhantomJSはヘッドレスブラウザです。つまり、ウィンドウが開いていないということです。実行中のプロセスです。クロムプロセスも同様の方法で開始できます。ページに必要な '.js'ファイルが提供されているので、Chrome開発ツールを開き、[リソース]タブで適切なファイルを見つけてください。 – Dave

関連する問題