29

たとえば、特定のWebサイトで一連の手順を実行し、いくつかのフォームに入力し、[送信]ボタンをクリックして、データをサーバーに送り返し、応答を受信し、応答に基づいて何かを実行して、データをサーバーに送り返す必要があるとします。ウェブサイトの。Pythonにwebbrowserモジュールがあることは知っていますが、Webブラウザーを呼び出さずにこれを実行したいと思います。純粋なスクリプトである必要があります。

Pythonで利用できるモジュールはありますか?それは私がそれを行うのに役立ちますか?
ありがとう

4

15 に答える 15

19

セレンはあなたが望むことを正確に行い、JavaScriptを処理します

于 2010-08-15T10:19:57.933 に答える
18

mechanizeもご覧ください。これは、 「ステートフルプログラマティックWebブラウジング」(サイトごと)を処理することを目的としています。

于 2009-08-18T09:43:36.323 に答える
8

すべての答えは古いです、私はお勧めします、そして私はリクエストの大ファンです

ホームページから:

Pythonの標準urllib2モジュールは、必要なHTTP機能のほとんどを提供しますが、APIは完全に壊れています。それは別の時代、そして別のウェブのために建てられました。最も単純なタスクを実行するには、膨大な量の作業(メソッドのオーバーライドでさえ)が必要です。

物事はこのようであってはなりません。Pythonではありません。

于 2013-10-08T19:11:27.790 に答える
8

最善の解決策は、リクエストBeautifulSoupを組み合わせることだと思います。質問を更新して、更新し続けることができるようにしたかっただけです。

于 2013-10-29T18:55:48.353 に答える
3

Seleniumhttp ://www.seleniumhq.org/は私にとって最良のソリューションです。Python、Java、または好きなプログラミング言語で簡単にコーディングできます。プログラムに変換する簡単なシミュレーション。

于 2013-11-27T14:36:59.983 に答える
2

Selenium2には、Pythonバインディングを備えたWebドライバーが含まれており、ヘッドレスhtmlUnitドライバーを使用したり、グラフィカルなデバッグのためにFirefoxまたはChromeに切り替えたりすることができます。

于 2011-06-09T15:14:40.717 に答える
2

これに役立つ組み込みのPythonモジュールがたくさんあります。たとえば、urllibhtmllib

アプローチ方法を変えると、問題はより簡単になります。「いくつかのフォームに入力し、送信ボタンをクリックして、データをサーバーに送り返し、応答を受信する」と言います。これは4段階のプロセスのように聞こえます。

実際、あなたがする必要があるのは、いくつかのデータをWebサーバーに投稿し、応答を取得することです。

これは次のように簡単です。

>>> 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がどれほど複雑で、何をしたいかによって異なります。正規表現を使用して解析することで解決できる場合があります。または、htmllib.HTMLParserクラスを使用するか、BeautifulSoupなどのより高レベルのより柔軟なパーサーを使用することもできます。

于 2009-08-18T09:38:11.857 に答える
2

mechanizeのラッパーであるzope.testbrowserを忘れないでください。

zope.testbrowserは、テストに特に重点を置いた、使いやすいプログラム可能なWebブラウザーを提供します。

于 2014-01-15T06:46:06.670 に答える
1

私が見つけた(そして現在実装している)最良の解決策は次のとおりです:-Selenium Webdriverを使用したPythonのスクリプト-PhantomJSヘッドレスブラウザー(Firefoxを使用すると、GUIが使用され、速度が低下します)

于 2013-12-19T10:48:59.460 に答える
1

iMacros Firefoxプラグイン(無料)が非常にうまく機能することがわかりました。

これは、WindowsCOMオブジェクトインターフェイスを使用してPythonで自動化できます。これがhttp://wiki.imacros.net/Pythonのサンプルコードです。PythonWindows拡張機能が必要です:

import win32com.client
def Hello():
    w=win32com.client.Dispatch("imacros")
    w.iimInit("", 1)
    w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
    Hello()
于 2015-02-10T19:48:20.497 に答える
0

おそらくurllib2が必要です。HTTPS、Cookie、認証などを処理できます。おそらく、 BeautifulSoupがHTMLページの解析に役立つことも必要になるでしょう。

于 2009-08-18T09:31:19.420 に答える
0

最後のイタリアのpycon (pdf)からこれらのスライドを見ることができます:著者は、Pythonでスクレイピングと自動ブラウジングを行うためのライブラリのほとんどをリストしました。だからあなたはそれを見るかもしれません。

私は、noseの作者の1人によって開発され、特にWebサイトのテストを目的としたツイル(すでに提案されています)がとても好きです。

于 2009-08-18T09:44:37.490 に答える
0

Internet Explorer固有ですが、かなり良いです:

http://pamie.sourceforge.net/

urllib / BeautifulSoupと比較した場合の利点は、IEを使用しているためJavascriptも実行できることです。

于 2009-08-18T10:36:51.003 に答える
0

httplib2 + beautifulsoup

firefox + firebug + httpreplayを使用して、JavaScriptがWebサイトからブラウザーとの間で何をやり取りするかを確認します。httplib2を使用すると、基本的にpostを介して同じことを実行できます。

于 2010-10-21T14:45:39.360 に答える
0

自動化については、間違いなくチェックアウトしたいかもしれません

webbot

これはセレンに基づいており、パラメータに基づいてクリック、入力などのアクションを実行する要素を自動的に検索するなど、非常に少ないコードでより多くの機能を提供します。

クラス名とIDが動的に変化するサイトでも機能します。

ここにドキュメントがあります:https ://webbot.readthedocs.io/

于 2018-06-30T07:21:46.367 に答える