特定のウェブサイトで一連の手順を実行し、フォームに入力し、送信ボタンをクリックし、データをサーバーに送信し、応答を受信し、応答に基づいて再度何かを実行し、サーバーにデータを送信する必要があるとしますウェブサイトの。 Pythonにはwebbrowserモジュールがあることは知っていますが、Webブラウザーを呼び出さずにこれを実行したいです。純粋なスクリプトである必要はありません。
Pythonで利用できるモジュールはありますか?
ありがとう
mechanize もご覧ください。 「ステートフルなプログラムによるWebブラウジング」(サイトごと)を処理することを意図しています。
Seleniumはあなたが望むことを正確に行い、javascriptを処理します
すべての答えは古く、私はお勧めします requests の大ファンです
ホームページから:
Pythonの標準urllib2モジュールは、必要なHTTP機能のほとんどを提供しますが、APIは完全に壊れています。それは別の時間のために、そして別のウェブのために構築されました。最も単純なタスクを実行するには、膨大な量の作業(メソッドのオーバーライドを含む)が必要です。
物事はこのようであってはなりません。 Pythonではありません。
最良の解決策は requests と BeautifulSoup の組み合わせだと思います。質問を更新して、更新されたままにしたかっただけです。
Selenium http://www.seleniumhq.org/ は私にとって最適なソリューションです。 Python、Java、または好きなプログラミング言語で簡単にコーディングできます。プログラムに変換する簡単なシミュレーション。
mechanize のラッパーである zope.testbrowser を忘れないでください。
zope.testbrowserは、テストに特化した使いやすいプログラム可能なWebブラウザーを提供します。
pythonこれを支援するモジュールがたくさんあります。たとえば、 rllib および htmllib 。
アプローチ方法を変更すると、問題はより単純になります。 「いくつかのフォームに入力し、送信ボタンをクリックし、データをサーバーに送り返し、応答を受信します」と言います。これは4段階のプロセスのように聞こえます。
実際、あなたがする必要があるのは、ウェブサーバーにデータを投稿して応答を取得することです。
これは次のように簡単です。
>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()
(urllibドキュメントから取られた例)。
応答をどうするかは、HTMLがどれだけ複雑で、何をしたいかによって異なります。正規表現を1つまたは2つ使用して解析することもできますし、htmllib.HTMLParserクラスを使用することもできますし、 Beautiful Soup のような高レベルのより柔軟なパーサーを使用することもできます。
Selenium2 にはwebdriverが含まれます。これには pythonバインディング があり、ヘッドレスhtmlUnitドライバーを使用するか、firefoxに切り替えるか、グラフィカルなデバッグ用にchrome 。
Java開発者。 http://htmlunit.sourceforge.net/apidocs/index.html の場合、HTMLUNITはパッケージです。
私は iMacros Firefoxプラグイン (無料)が非常にうまく機能することを発見しました。
Windows COMオブジェクトインターフェイスを使用してPythonで自動化できます。以下に http://wiki.imacros.net/Python 。 Python Windows拡張機能 が必要です。
import win32com.client
def Hello():
w=win32com.client.Dispatch("imacros")
w.iimInit("", 1)
w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
Hello()
私が見つけた(そして現在実装している)最良の解決策は次のとおりです:-pythonでSelenium webdriverを使用するスクリプト-PhantomJSヘッドレスブラウザ
Internet Explorer固有ですが、かなり良い:
Urllib/BeautifulSoupと比較した利点は、IEを使用しているためJavascriptも実行されることです。
おそらく rllib2 が必要です。 HTTPS、Cookie、認証などを処理できます。 BeautifulSoup もHTMLページの解析に役立つでしょう。
last italian pycon (pdf)からこれらのスライドを見ることができます:著者は、Pythonでスクレイピングと自動ブラウジングを行うためのライブラリのほとんどをリストしました。あなたはそれを見るかもしれません。
私は非常に気に入っています twill (これは既に提案されています)、これは鼻の作者の一人によって開発され、特にウェブサイトのテストを目的としています。
httplib2 + beautifulsoup
Firefox + firebug + httpreplayを使用して、JavaScriptがWebサイトからブラウザーとやり取りする内容を確認します。 httplib2を使用すると、基本的にpostとgetで同じことができます
自動化のためにあなたは間違いなくチェックアウトしたいかもしれません
ウェブボット
Seleniumに基づいており、パラメーターに基づいてclick、typeなどのアクションを実行する要素を自動的に見つけるなど、非常に少ないコードで多くの機能を提供します。
クラス名とIDが動的に変化するサイトでも機能します。
ここにドキュメントがあります: https://webbot.readthedocs.io/