web-dev-qa-db-ja.com

SeleniumWebdriverとMechanize

よく使うウェブサイトのいくつかのフォームで繰り返しデータ入力を自動化することに興味があります。これまでのところ、ヘッドレス方式でこれをサポートするツールとして、SeleniumWebDriverとMechanizeを検索しました。

私の質問は、一度使用することともう一方を使用することには根本的な技術的な違いがありますか?セレンは主にテストに使用されます。また、私が探していることを正確に行うためにそれを使用している人もいることに気づきました。それはデータ入力を自動化することです。その場合、テストは2番目の利点になります。

MechanizeでやりたいことのためにSeleniumを使用しない理由はありますか?それは問題ではなく、これらのツールの両方が機能しますか?

私はどちらが良いかを尋ねているのではなく、どちらがその仕事に適したツールであるかを尋ねています。おそらく、私は各ツールの目的の背後にある前提を理解していません。

15
randombits

これらは完全に異なるツールであり、Webスクレイピング、Web自動化、自動データ抽出の範囲でいくらか「交差」しています。

mechanizeは、Cookieの処理、ブラウザの履歴、フォームの送信など、多くの組み込み機能を備えた、プログラムによるWebブラウジングのための成熟した広く使用されているツールです。ここで理解しておくべき重要なことは、mechanize.Browserは実際のブラウザではありません、JavaScriptを実行および理解できず、Webページを形成するために頻繁に必要となる非同期リクエストを送信できません。

ここでSeleniumが役立ちます。これは、Webスクレイピングでも広く使用されているブラウザ自動化ツールです。 Seleniumは通常、「フォールバック」ツールになります-誰かがmechanizeまたは RoboBrowser または ())でサイトをWebスクレイピングできない場合MechanicalSoup (注-別の選択肢)たとえば、JavaScriptの「重さ」のため、通常はSeleniumを選択します。 Seleniumを使用すると、ヘッドレス、自動化 PhantomJS ブラウザー、または 仮想ディスプレイ を使用することもできます。一般的に言及される欠点として、パフォーマンスがしばしば言及されます-Seleniumを使用すると、ページを形成するために必要な追加ファイルをロードし、XHRリクエストを作成し、レンダリングするWebブラウザーで実際のユーザーとしてターゲットサイトを操作します等.

そして、これ自体は、どこでもSeleniumを使用する必要があるという意味ではありません-ツールを賢く選択してください機器に精​​通しているからではなく、問題によりよく適合するために選択してください


また、最初に、Webスクレイピングに進むのではなく、API(ターゲットWebサイトによって提供されている場合)の使用を検討する必要があることにも注意してください。そして、それに関して言えば、ウェブスクレイピングの良い市民になりましょう。

35
alecxe