
Lucas Mitchell
Automation Engineer

Webスクレイピングは、Webサイトから情報を抽出するための強力な方法ですが、サイトがCAPTCHA、レート制限、またはプロキシを実装して不要なスクレーパーをブロックする場合、しばしば課題となります。このガイドでは、高性能なWebスクレイピングライブラリであるhrequestsを紹介します。また、hrequestsの基本的な使用方法を説明します。これには、Capsolverと組み合わせたhrequestsを使用してサイトをスクレイピングするデモが含まれます。これにより、ReCaptchaの課題を回避できます。
hrequestsは、速度と柔軟性を重視して構築された、最新のPython HTTPライブラリです。負荷の高いWebスクレイピングタスクを処理するために設計されています。これは、本質的にrequestsの拡張バージョンであり、特に追加のプロキシやCAPTCHA処理を必要とする環境において、より多くの制御でリクエストを処理することに重点を置いています。
このライブラリは、いくつかの機能を提供します。
hrequestsの使用を開始する前に、以下のものがインストールされていることを確認してください。
pip install hrequests capsolver
スクレイピングするサイトが要求する場合、CAPTCHAを解決するためのCapsolver APIキーも用意してください。詳細なセットアップ手順については、hrequestsのGitHubページをご覧ください。
以下は、hrequestsを使用してWebページをスクレイピングする方法の簡単な例です。
import hrequests
# スクラップしたいWebページのURL
url = 'https://example.com'
# 単純なGETリクエストを行う
response = hrequests.get(url)
# ステータスコードを出力
print(response.status_code)
print(f"ステータスコード: {response.status_code}")
# ページのコンテンツを出力します
print(f"ページコンテンツ: {response.text}")
この基本的なスクリプトは、指定されたURLへのGETリクエストを行い、ステータスコードとページコンテンツを出力します。ただし、多くのWebサイトはより複雑であり、プロキシローテーション、ユーザーエージェントのスプーフィング、またはCAPTCHAの解決などの追加の処理が必要です。
このセクションでは、CAPTCHAをバイパスするためにCapsolverをhrequestsと統合する方法について説明します。Capsolverは、ReCaptcha V2など、さまざまな種類のCAPTCHAの解決を支援する外部サービスです。これはWebサイトで一般的に使用されています。
Capsolverを使用してReCaptcha V2を解決し、CAPTCHAを最初に解決する必要があるページのコンテンツをスクレイピングする方法を紹介します。
import capsolver
import hrequests
import os
# 機密情報の環境変数の使用を検討してください
PROXY = os.getenv("PROXY", "http://username:password@host:port")
capsolver.api_key = os.getenv("CAPSOLVER_API_KEY", "あなたのCapsolver APIキー")
PAGE_URL = os.getenv("PAGE_URL", "PAGE_URL")
PAGE_KEY = os.getenv("PAGE_SITE_KEY", "PAGE_SITE_KEY")
def solve_recaptcha_v2(url, key):
solution = capsolver.solve({
"type": "ReCaptchaV2Task",
"websiteURL": url,
"websiteKey": key,
"proxy": PROXY
})
return solution['solution']['gRecaptchaResponse']
def main():
print("ReCaptcha v2を解決しています")
solution = solve_recaptcha_v2(PAGE_URL, PAGE_KEY)
print("解決策: ", solution)
# CAPTCHAが解決されたので、スクレイピングを続行できます
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
# CAPTCHAソリューションを使用してGETリクエストを送信します
response = hrequests.get(
PAGE_URL,
headers=headers,
data={"g-recaptcha-response": solution},
proxies = {"http": PROXY, "https": PROXY}
)
# ステータスを確認し、ページの内容を出力
if response.status_code == 200:
print("ページを取得しました!")
print(response.text)
else:
print(f"ページの取得に失敗しました。ステータスコード: {response.status_code}")
if __name__ == "__main__":
main()
このスクリプトを拡張して、スクレイピングのニーズに合わせてください。hrequestsが提供する追加機能も試してみてください。スクレイピング活動がウェブサイトの利用規約と法的ガイドラインに従っていることを常に確認してください。
ハッピー・スクレイピング!
