初心者は、Python クローラー Selenium ライブラリに関する詳細なチュートリアルを読む必要があります。

Web ページをクローリングする過程では、HTML コードを解析するだけでは取得したいデータが得られないことがよくありますが、これらのデータは AJAX の非同期読み込みや JS レンダリングによってページ上に表示されます。

Selenuim は、複数のブラウザをサポートする自動テスト ツールです。クローラーでは、これを使用してブラウザーのページ閲覧をシミュレートし、それによって JavaScript レンダリングの問題を解決できます。

1. 使用例

2. 詳細な紹介

2.1 ブラウザオブジェクトの宣言

つまり、どのブラウザを使用して操作するかをプログラムに指示します。

2.2 ページへのアクセス

2.3 要素の検索

Web ページに正常にアクセスした後、検索ボックスを見つけてキーワードを入力して Enter キーを押すなど、いくつかの操作を実行する必要がある場合があります。したがって、セレン内の元素を見つける必要があります。 

2.3.1 単一要素

Selenium には要素を見つける方法が 2 つあります。1 つ目は、CSS に従って選択するか、xpath に従って検索するかを指定するなど、要素の検索に使用する方法を指定することです。

詳しい要素検索方法は以下の通りです

find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

2 番目の方法は、find_element() を直接使用する方法で、渡される最初のパラメータは、使用する必要がある要素検索メソッドです。

2.3.2 複数の要素

複数の要素を検索する方法は、基本的に単一の要素を検索する方法と同じです (単一の要素を検索する関数に s を追加するだけです)。複数の要素を検索するとリストが返されます。

2.4 要素の相互作用

要素の相互作用では、まず要素を取得し、次に取得した要素に対して相互作用メソッドを呼び出します。たとえば、検索ボックスにテキストを入力します。

2.5 インタラクティブなアクション

インタラクションとは、アクションをインタラクション チェーンにアタッチし、それらをシリアルに実行することです。これには、ActionChains を使用する必要があります。

2.6 JavaScriptの実行

たとえば、ドラッグアンドドロップ

2.7 要素情報の取得

要素検索を通じて要素を取得した後、この要素の属性とテキストも取得する必要がある場合があります。

2.7.1 属性の取得

2.8 フレーム

親フレームを見つけても子フレームの情報は見つからないため、子フレームに切り替えて再度検索する必要があります。同様に、子フレームでは親フレームの情報を見つけることができません。

2.9 待機中

Web ページをリクエストするときに、AJAX 非同期ロードが発生する場合があります。Selenium はメイン Web ページのみをロードし、AJAX は考慮しません。したがって、続行する前に、Web ページが完全に読み込まれるまでしばらく待つ必要があります。

2.9.1 暗黙的な待機

暗黙的待機を使用する場合、Webdriver が指定された要素を見つけられない場合、Webdriver は待機を続けます。指定した時間を超えても、指定した要素が見つからない場合は、要素が見つからない例外がスローされます。デフォルトの待ち時間は 0 です。

暗黙的な待機はページ全体を待機します。

暗黙的待機はドライバー サイクル全体で機能するため、設定する必要があるのは 1 回だけであることに注意してください。

2.9.2 明示的な待機

表示待ちには、待ち条件と待ち時間が含まれます。

まず待機条件が成立しているかどうかを判定し、成立していればそのままリターンし、条件が成立していない場合は最長待機時間を待機時間とし、待機時間を過ぎても待機条件が成立しない場合は例外をスローします。

明示的な待機は、指定された要素を待機します。

2.10 ブラウザの進む/戻る

back は前のページに戻ることを実現し、forward は次のページに進むことを実現します

2.11 Cookieの操作

2.12 タブ管理

タブ管理とはブラウザのタブのことです。場合によっては、ブラウザーで新しいタブを追加したり、タブを削除したりする必要があります。これを実現するには Selenium を使用します。

おすすめ

転載: blog.csdn.net/qiqi1220/article/details/128669555