WebスクレイピングのためにSeleniumでプロキシを設定する方法

ハウツー, パイソン, プロキシ, 2024年11月27日5分で読める

Webスクレイピングや自動化のためにSeleniumで作業するとき、プロキシを統合することは必須です。プロキシは、禁止、レート制限、地域制限をバイパスすることを可能にし、タスクをシームレスで効率的にします。しかし、Seleniumでプロキシを設定するのは、特に認証を扱ったり、HTTPリクエストを監視する必要がある場合は、難しいかもしれません。そこでSelenium Wire の登場です。

セレニウム・ワイヤー

Selenium WireはSeleniumの拡張バージョンで、プロキシの認証、HTTPリクエストとレスポンスの傍受、ネットワークトラフィックのデバッグなどの高度な機能が追加されている。

このガイドでは、Selenium でプロキシを設定する方法を紹介します。 セレンワイヤー そして ウェブドライバマネージャ.通常、ブラウザからウェブドライバ用のバイナリファイルをダウンロードし、定期的に更新する必要がある。そのため ウェブドライバマネージャ は、これらの作業をあなたに代わって処理することで、このプロセスを簡素化します。

このブログが終わるころには、ProxyScrape プロキシに合わせた Selenium のセットアップが完了し、どんな課題にも取り組めるようになっているでしょう。さあ、始めましょう!

TL;DR

チュートリアルの全行程を経ずに完全なスクリプトにアクセスするには、このリンクをクリックして完全なコードをコピーしてください。

前提条件 

Seleniumでプロキシをセットアップする前に、以下のツールとライブラリがインストールされていることを確認してください:

  • Pythonのインストール
  • 必要なPythonパッケージ(Pipインストール)
    • セレンワイヤー
    • ウェブドライバマネージャ

以下のコマンドを実行して、すべての依存関係をインストールする:

pipinstallselenium-wire webdriver-manager

注意:"ModuleNotFoundError:blinker._saferefというモジュールがありません。".これは、blinkerライブラリをバージョン1.7.0にダウングレードすることで解決できます。

  • まず始めに アンインストール 現在のバージョンの 目かくし
pip uninstall blinker
  • その後、上記の特定のバージョンをインストールする:
pipinstallblinker==1.7.0

前提条件が整ったところで、スクリプトの設定を3つの簡単なステップに分解してみよう:

Seleniumでプロキシを設定する:スクリプト

さて、前提条件を説明したところで、実際のスクリプトに移りましょう。このステップ・バイ・ステップ・ガイドでは ProxyScrape レジデンシャル・プロキシ を使用してSeleniumを使用する。 セレンワイヤー そして ウェブドライバマネージャ.

1.必要なライブラリのインポート

まず、必要なライブラリをインポートする:

インポートre
fromseleniumwireimportwebdriver
fromselenium.webdriver.chrome.serviceimportService
fromselenium.webdriver.chrome.options import Options
fromwebdriver_manager.chromeimportChromeDriverManager

2.プロキシ設定

ProxyScrape プロキシの詳細を定義します:

proxy_address="rp.proxyscrape.com:6060"
プロキシ・ユーザー名="あなたのプロキシ・ユーザー名"
proxy_password="あなたのproxy_password"
  • プレースホルダーを置き換える (proxy_username, proxy_password) 実際のProxyScrape 。
  • rp.proxyscrape.com:6060はProxyScrape レジデンシャル・プロキシ・エンドポイントである。

3.セレニウムワイヤーオプション

Selenium Wire でプロキシを設定します:

sw_options = {
   'proxy': {
       'http': f'http://{proxy_username}:{proxy_password}@{proxy_address}',
       'https': f'https://{proxy_username}:{proxy_password}@{proxy_address}',
   }
}

4.クロームオプションの設定

Chromeの設定を最適化してパフォーマンスを向上:

chrome_options =Options()
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--サンドボックスなし")
chrome_options.add_argument("--disable-dev-shm-usage")

5.WebDriverの初期化

セットアップ セレンワイヤーウェブドライバマネージャ:

service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service,seleniumwire_options=sw_options,options=chrome_options)
  • ChromeDriverManager:ブラウザのバージョンに合ったChromeDriverバイナリを自動的にダウンロードしてセットアップします。
  • seleniumwire_options:Selenium Wire 用のプロキシを設定します。
  • オプションを指定します:Chrome固有の設定を適用します。

6.対象ウェブサイトにアクセスする

ProxyScrape Judge エンドポイントに移動し、プロキシをテストする:

driver.get('https://ssl-judge2.api.proxyscrape.com/')
  • ProxyScrape 判定します:このエンドポイントは、IPアドレスやヘッダーなど、使用されているプロキシに関する情報を返します。

7.レスポンスの解析

正規表現を使用して、プロキシされたIPアドレスを抽出して表示します:

# 例レスポンスからIPを取り出す
レスポンス = driver.page_source

# オリジンIPを解析するために単純な正規表現を使用する
print("レスポンス:", レスポンス)
print("Your IP is:", re.search("HTTP_X_FORWARDED_FOR = (¬d+.)+¬d+", response).group().split("=")[-1])
# ブラウザ・インスタンスを終了する
ドライバー.quit()
  • 正規表現の説明:
    • ヘッダーにマッチする HTTP_X_FORWARDED_FOR を抽出し、プロキシされたIP
    • IPアドレスを分離するために結果を分割する

結論

結論として、ProxyScrape 住宅用プロキシと Selenium Wire の併用は、プライバシーとセキュリティを強化した高度なウェブスクレイピングと自動化機能を必要とするすべての人にとって堅牢なソリューションです。

このガイドに従うことで、制限を回避するだけでなく、最小限の設定作業で済むシームレスな環境を設定することができます。この方法では、Selenium Wireや WebDriver Managerのような強力なツールを活用して、プロキシを経由したトラフィックを効率的に管理・ルーティングし、スクレイピングタスクの効率性と信頼性を維持します。

ウェブスクレイピングのサポートが必要な場合、または当社製品についてご質問がある場合は、遠慮なくライブチャットでお問い合わせください。また、サポートやアップデートのために私たちのDiscordコミュニティに参加することもできます。