Python を少し使ったことがある方、特にデータ スクレイピングの場合、おそらく、取得したデータを取得しようとしているときにブロックされる状況に遭遇したことがあるでしょう。欲しい。このような状況では、プロキシの使用方法を知っておくと便利なスキルです。
この記事では、プロキシとは何か、プロキシがなぜ役立つのか、Python のライブラリ リクエストを使用してプロキシを使用する方法について説明します。
プロキシとは何かを定義することから始めましょう。
プロキシ サーバーは、コンピュータとインターネットの間の「仲介者」と考えることができます。 Web サイトにリクエストを送信すると、リクエストは最初にプロキシ サーバーを通過します。その後、プロキシはリクエストを Web サイトに転送し、レスポンスを受信して、それを送り返します。このプロセスでは、IP アドレスがマスクされ、リクエストが自分のデバイスではなくプロキシ サーバーから送信されているかのように見えます。
当然のことですが、これには多くの結果と用途があります。たとえば、厄介な IP 制限を回避したり、匿名性を維持したりするために使用できます。
それでは、なぜデータをスクレイピングするときにプロキシが役立つのでしょうか?そうですね、理由は前に説明しました。たとえば、これらを使用して一部の制限を回避できます。
したがって、Web スクレイピングの特定のケースでは、次の理由で役立ちます:
リクエスト ライブラリは、Python で HTTP リクエストを作成するための一般的な選択肢であり、プロキシをリクエストに組み込むのは簡単です。
その方法を見てみましょう!
まず最初に、有効なプロキシを実際に使用する前に取得する必要があります。これを行うには、2 つのオプションがあります:
プロキシのリストが完成したので、それらを使用し始めることができます。たとえば、次のような辞書を作成できます:
proxies = { 'http': 'http://proxy_ip:proxy_port', 'https': 'https://proxy_ip:proxy_port', }
これで、プロキシを使用してリクエストを行うことができます:
import requests proxies = { 'http': 'http://your_proxy_ip:proxy_port', 'https': 'https://your_proxy_ip:proxy_port', } response = requests.get('https://httpbin.org/ip', proxies=proxies)
リクエストの結果を確認するには、応答を印刷できます。
print(response.status_code) # Should return 200 if successful print(response.text) # Prints the content of the response
すべてが順調に進んだ場合、応答にはあなたの IP アドレスではなく、プロキシ サーバーの IP アドレスが表示されるはずであることに注意してください。
プロキシで認証が必要な場合は、いくつかの方法で処理できます。
方法 1: プロキシ URL に資格情報を含める
プロキシで認証を管理するためにユーザー名とパスワードを含めるには、次のようにします。
proxies = { 'http': 'http://username:password@proxy_ip:proxy_port', 'https': 'https://username:password@proxy_ip:proxy_port', }
方法 2: HTTPProxyAuth を使用する
あるいは、次のように HTTPProxyAuth クラスを使用して認証を処理することもできます。
from requests.auth import HTTPProxyAuth proxies = { 'http': 'http://proxy_ip:proxy_port', 'https': 'https://proxy_ip:proxy_port', } auth = HTTPProxyAuth('username', 'password') response = requests.get('https://httpbin.org/ip', proxies=proxies, auth=auth)
多数のリクエストを行う場合、単一のプロキシを使用するだけでは不十分な場合があります。この場合、循環プロキシを使用できます。これにより、プロキシの IP アドレスが定期的に、またはリクエストごとに変更されます。
このソリューションをテストしたい場合は、リストを使用してプロキシを手動でローテーションするか、プロキシ ローテーション サービスを使用するかの 2 つのオプションがあります。
両方のアプローチを見てみましょう!
プロキシのリストがある場合は、次のように手動でローテーションできます。
import random proxies_list = [ 'http://proxy1_ip:port', 'http://proxy2_ip:port', 'http://proxy3_ip:port', # Add more proxies as needed ] def get_random_proxy(): proxy = random.choice(proxies_list) return { 'http': proxy, 'https': proxy, } for i in range(10): proxy = get_random_proxy() response = requests.get('https://httpbin.org/ip', proxies=proxy) print(response.text)
ScraperAPI のようなサービスは、プロキシのローテーションを処理します。通常は、提供されるプロキシ URL を更新し、次のように URL の辞書を管理するだけで済みます。
proxies = { 'http': 'http://your_service_proxy_url', 'https': 'https://your_service_proxy_url', } response = requests.get('https://httpbin.org/ip', proxies=proxies)
Python でのプロキシの使用は、Web スクレイピング、テスト、地理的に制限されたコンテンツへのアクセスにとって貴重なテクニックです。これまで見てきたように、ライブラリ リクエストを使用すると、プロキシを HTTP リクエストに簡単に統合できます。
Web からデータをスクレイピングする際のいくつかのヒント:
コーディングを楽しんでください!
以上がPython でプロキシを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。