動的 Web スクレイピングは通常、HTTP リクエストを処理するリクエスト、ブラウザの動作をシミュレートする Selenium、または pyppeteer などの Python ライブラリを使用します。次の記事ではセレンの使用に焦点を当てます。
selenium は Web アプリケーションをテストするためのツールですが、特に JavaScript によって動的に生成された Web コンテンツをスクラップする必要がある場合に、Web スクレイピングにもよく使用されます。 Selenium は、クリック、テキストの入力、Web ページ要素の取得など、ブラウザーでのユーザーの動作をシミュレートできます。
まず、Selenium がインストールされていることを確認してください。そうでない場合は、pip:
経由でインストールできます。
pip install selenium
対応するブラウザの WebDriver もダウンロードする必要があります。 Chrome ブラウザを使用すると仮定すると、ChromeDriver をダウンロードし、そのパスがシステム環境変数に追加されていることを確認する必要があります。または、コード内でそのパスを直接指定することもできます。
Web ページのタイトルを取得する簡単な例を次に示します:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # Setting up webdriver driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) # Open the webpage driver.get('https://www.example.com') # Get the webpage title title = driver.title print(title) # Close the browser driver.quit()
このスクリプトは example.com を開き、そのタイトルを取得して印刷します。
webdriver_manager は、WebDriver のバージョンを自動的に管理するサードパーティのライブラリであることに注意してください。使用したくない場合は、WebDriver を手動でダウンロードしてパスを指定することもできます。
動的 Web ページには、JavaScript でレンダリングされたコンテンツが含まれる場合があります。 Selenium は、これらの要素が読み込まれるのを待ってから動作するため、このような Web ページの処理に非常に適しています。
Python を使用して動的 Web ページをクロールする場合、プロキシを使用することがよくあります。プロキシを使用すると、一方では多くの障害が回避され、他方では作業効率が向上します。
上記では Selenium のインストールについて紹介しました。さらに、対応するブラウザの WebDriver をダウンロードし、そのパスがシステムの環境変数に追加されていることを確認する必要もあります。または、コード内でそのパスを直接指定することもできます。
上記の手順を完了したら、プロキシを構成して動的 Web ページをスクラップできます。
from selenium import webdriver from selenium.webdriver.chrome.options import Options # Set Chrome options chrome_options = Options() chrome_options.add_argument('--proxy-server=http://your_proxy_ip:port') # Specify the WebDriver path (if you have added the WebDriver path to the system environment variables, you can skip this step) # driver_path = 'path/to/your/chromedriver' # driver = webdriver.Chrome(executable_path=driver_path, options=chrome_options) # If WebDriver path is not specified, the default path is used (make sure you have added WebDriver to your system environment variables) driver = webdriver.Chrome(options=chrome_options) # Open the webpage driver.get('https://www.example.com') # Get the webpage title title = driver.title print(title) # Close the browser driver.quit()
この例では、--proxy-server=http://your_proxy_ip:port はプロキシを構成するためのパラメータです。your_proxy_ip と port を実際に使用するプロキシ サーバーの IP アドレスとポート番号に置き換える必要があります。使用します。
プロキシサーバーが認証を必要とする場合は、次の形式を使用できます:
chrome_options.add_argument('--proxy-server=http://username:password@your_proxy_ip:port')
ここで、ユーザー名とパスワードはプロキシ サーバーのユーザー名とパスワードです。
上記のコードを実行すると、selenium は設定されたプロキシ サーバーを介してターゲット Web ページにアクセスし、Web ページのタイトルを出力します。
ChromeDriver へのパスを指定するには?
ChromeDriver は Selenium WebDriver の一部です。 WebDriver API を通じて Chrome ブラウザと対話し、自動テストや Web クローラーなどの機能を実装します。
ChromeDriver のパスの指定には、主に環境変数の設定が含まれます。 具体的な手順は次のとおりです:
1. Chrome のインストール場所を探す
デスクトップ上の Google Chrome ショートカットを右クリックし、[ファイルの場所を開く] を選択すると、このファイルを見つけることができます。
2.システム環境変数 Path
に Chrome のインストールパスを追加します。
これにより、システムは任意の場所にある ChromeDriver を認識できるようになります。
3. ChromeDriver
をダウンロードして解凍します。
必ず Chrome ブラウザのバージョンと一致する ChromeDriver をダウンロードし、exe プログラムに解凍してください。
4. ChromeDriverのexeファイルをChromeのインストールパスにコピー
このようにして、ChromeDriver を使用する必要がある場合、システムは自動的にそれを認識して呼び出すことができます
上記は、Python 動的 Web クローリングにおける Selenium と Webdriver の適用と、Web ページをクローリングするときにそれを回避する方法です。もちろん、上記の例を通じて実際の操作を練習することもできます。
以上がPython 動的 Web スクレイピングの例: Selenium と Webdriver のアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。