BotrightとPythonを使ったウェブスクレイピング 2025年

Emma Foster
Machine Learning Engineer
14-Nov-2024
BotRightを使ってCAPTCHAを解く方法、簡単なスクレーパーを作成する方法、あるいはさらに優れた高度なスクレーパーを作成する方法について疑問に思っているかもしれません。
さあ、あなたのためのチュートリアルを始めましょう!
Botrightの概要
BotRightの概要
BotRight は、ウェブサイト全体で増加するボット検出システムの複雑さをナビゲートするように特別に設計された、高度なウェブ自動化のためのPythonライブラリです。基本的な自動化ツールとは異なり、BotRightは、自動化されたブラウジングを非常に人間らしいものにする洗練されたコントロールを提供することで、単純な対話を超えています。この人間の行動シミュレーションへの重点は、通常はボットをブロックまたは制限するウェブサイトにアクセスするために不可欠です。
Selenium WebDriverの上に構築されたBotRightは、複雑なブラウザの相互作用を単純なコマンドに抽象化する高レベルのAPIを提供し、初心者と上級者の両方が、低レベルのブラウザコマンドを管理する必要なく、洗練されたスクレーパーや自動化スクリプトを開発できます。これにより、単純なデータ収集から、ボット検出アルゴリズムに対する回復力を必要とする複雑な複数ステップのウェブタスクまで、さまざまなプロジェクトに最適な選択肢となります。
なぜBotRightを選ぶのか?
BotRightは、自動化の分野で際立つ、いくつかの機能を提供します。
-
人間らしい相互作用: BotRightの設計は、スムーズなマウスの動き、自然なタイピングパターン、タイミングの遅延など、実際の人間の行動をシミュレートすることに重点を置いています。これらの動作により、検出のリスクが軽減され、通常は本物のユーザーに制限されているコンテンツへのアクセスがより信頼性が高まります。
-
ブラウザの状態の永続性: BotRightはブラウザプロファイルをサポートすることで、複数の自動化実行間でセッションの状態を維持できます。この機能は、ログインの永続性を必要とするタスク、または特定のCookieとキャッシュの状態を維持する必要があるタスクに特に役立ちます。
-
使いやすさ: BotRightは高度な機能を備えていますが、驚くほど使いやすく、APIは複雑な自動化タスクを効率化するように構造化されており、通常Selenium設定に伴う技術的なオーバーヘッドの大部分を解消しています。初心者でもすぐに始められますし、専門家はBotRightの柔軟性を活用して、高度にカスタマイズされたソリューションを構築できます。
-
複雑なワークフローのスケーラビリティ: BotRightは、AJAX駆動のサイトの処理、ページネーションされたデータ抽出の管理、CAPTCHAの解決など、より高度なタスクに適応できます。CapSolverなどのCAPTCHAソルバーと組み合わせることで、BotRightはCAPTCHAバイパスを必要とするワークフローを処理し、厳重に保護されたウェブサイトであっても自動化できます。
-
統合された拡張機能とプラグイン: BotRightは、自動化機能を強化するためにさまざまな拡張機能とプラグインの包含をサポートしています。たとえば、CapSolverのようなツールをBotRight内で使用すると、CAPTCHAの課題を管理できるため、スクレーピングや自動化のために、より幅広いウェブサイトのロックを解除できます。
Botrightのセットアップ
始める前に、システムにPython 3.7以上がインストールされていることを確認してください。次の手順に従ってBotrightをセットアップしてください。
-
Botrightのインストール:
bashpip install botright
-
WebDriver Managerのインストール:
Botrightは、ブラウザドライバを管理するために
webdriver_manager
パッケージに依存しています。bashpip install webdriver-manager
-
インストールの確認:
新しいPythonファイルを作成し、Botrightをインポートして、正しくインストールされていることを確認してください。
pythonfrom botright import Botright
エラーが発生しない場合、Botrightは正しくインストールされています。
基本的なスクレーパーの作成
Botrightを使ってquotes.toscrape.comからデータを取得する簡単なスクリプトを作成しましょう。
引用符のスクレーピング
スクリプト: scrape_quotes.py
python
from botright import Botright
def scrape_quotes():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
if __name__ == "__main__":
scrape_quotes()
スクリプトの実行:
bash
python scrape_quotes.py
出力:
“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.” - Albert Einstein
...
説明:
Botright
をコンテキストマネージャーとして使用して、適切なセットアップとティアダウンを確保します。bot.get()
を使ってウェブサイトに移動します。- すべての引用符要素を見つけて、テキストと作成者を抽出します。
ページネーションの処理
スクリプト: scrape_quotes_pagination.py
python
from botright import Botright
def scrape_all_quotes():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
while True:
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
# 次のページがあるか確認します
next_button = bot.find_elements_by_css_selector('li.next > a')
if next_button:
next_button[0].click()
else:
break
if __name__ == "__main__":
scrape_all_quotes()
説明:
- "次へ"ボタンが利用可能かどうかを確認することで、ページをループ処理します。
find_elements_by_css_selector
を使って要素を見つけます。- "次へ"ボタンをクリックして、次のページに移動します。
動的コンテンツのスクレーピング
スクリプト: scrape_dynamic_content.py
python
from botright import Botright
import time
def scrape_tags():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/")
# 'トップ10タグ'リンクをクリックして、タグを動的に読み込みます
bot.click('a[href="/tag/"]')
# 動的コンテンツが読み込まれるまで待ちます
time.sleep(2)
tags = bot.find_elements_by_css_selector("span.tag-item > a")
for tag in tags:
tag_name = tag.text
print(f"Tag: {tag_name}")
if __name__ == "__main__":
scrape_tags()
説明:
- リンクをクリックして、タグページに移動します。
time.sleep()
を使って、動的コンテンツが読み込まれるまで待ちます。- タグを抽出して印刷します。
フォームの送信とログイン
スクリプト: scrape_with_login.py
python
from botright import Botright
def login_and_scrape():
with Botright() as bot:
bot.get("https://quotes.toscrape.com/login")
# ログインフォームに入力します
bot.type('input#username', 'testuser')
bot.type('input#password', 'testpass')
bot.click("input[type='submit']")
# ログアウトリンクを確認することで、ログインを確認します
if bot.find_elements_by_css_selector('a[href="/logout"]'):
print("ログインに成功しました!")
# ここで引用符をスクレーピングします
bot.get("https://quotes.toscrape.com/")
quotes = bot.find_elements_by_css_selector("div.quote")
for quote in quotes:
text = quote.find_element_by_css_selector("span.text").text
author = quote.find_element_by_css_selector("small.author").text
print(f"\"{text}\" - {author}")
else:
print("ログインに失敗しました。")
if __name__ == "__main__":
login_and_scrape()
説明:
- ログインページに移動して、資格情報を入力します。
- ログアウトリンクの存在を確認することで、ログインを確認します。
- ログインしているユーザーが利用できるコンテンツをスクレーピングします。
注: quotes.toscrape.com
は、デモのためにどのユーザー名とパスワードも許可しているので、ダミーの資格情報を使用できます。
BotrightにCapSolverを統合する
quotes.toscrape.comにはCAPTCHAはありませんが、多くの現実世界のウェブサイトにはCAPTCHAがあります。そのような場合に備えて、CapSolverブラウザ拡張機能を使ってBotrightスクリプトにCapSolverを統合する方法を紹介します。
CapSolver拡張機能のダウンロード
-
拡張機能のダウンロード:
- CapSolver GitHubリリースページにアクセスします。
- 最新バージョン(例:
capsolver-chrome-extension-v0.2.3.zip
)をダウンロードします。 - プロジェクトのルートディレクトリ(例:
./capsolver_extension
)に解凍します。
CapSolver拡張機能の設定
-
config.json
を見つける:- パス:
capsolver_extension/assets/config.json
- パス:
-
config.json
を編集する:json{ "apiKey": "YOUR_CAPSOLVER_API_KEY", "enabledForcaptcha": true, "captchaMode": "token", "enabledForRecaptchaV2": true, "reCaptchaV2Mode": "token", "solveInvisibleRecaptcha": true, "verbose": false }
"YOUR_CAPSOLVER_API_KEY"
を実際のCapSolver APIキーに置き換えてください。- 予想されるCAPTCHAの種類に基づいて、
enabledForcaptcha
またはenabledForRecaptchaV2
をtrue
に設定します。 - モードを
"token"
に設定すると、自動的に解決されます。
BotrightでのCapSolver拡張機能の読み込み
BotrightでCapSolver拡張機能を使用するには、ブラウザが起動時に拡張機能を読み込むように構成する必要があります。
注: Botrightでは、拡張機能の追加など、ブラウザオプションをカスタマイズできます。
修正済みスクリプト:
python
from botright import Botright
from selenium.webdriver.chrome.options import Options
import os
def create_bot_with_capsolver():
# CapSolver拡張機能フォルダーへのパス
extension_path = os.path.abspath('capsolver_extension')
# Chromeオプションを設定します
options = Options()
options.add_argument(f"--load-extension={extension_path}")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
# カスタムオプションを使ってBotrightを初期化します
bot = Botright(options=options)
return bot
説明:
Options
をインポートする:selenium.webdriver.chrome.options
からChromeオプションを設定します。
- Chromeオプションを設定する:
options.add_argument()
を使って、CapSolver拡張機能を追加します。
- オプションを使ってBotrightを初期化する:
Botright
のインスタンスを作成する際に、options
を渡します。
CapSolver統合を使用した例となるスクリプト
GoogleのreCAPTCHAデモなど、reCAPTCHAのあるサイトに移動することで、統合を実証します。
スクリプト: scrape_with_capsolver_extension.py
python
from botright import Botright
from selenium.webdriver.chrome.options import Options
import os
import time
def solve_captcha_and_scrape():
# CapSolver拡張機能フォルダーへのパス
extension_path = os.path.abspath('capsolver_extension')
# Chromeオプションを設定します
options = Options()
options.add_argument(f"--load-extension={extension_path}")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
# カスタムオプションを使ってBotrightを初期化します
with Botright(options=options) as bot:
bot.get("https://www.google.com/recaptcha/api2/demo")
# CapSolverがCAPTCHAを解決するまで待ちます
print("CAPTCHAが解決されるまで待ちます...")
# 平均解決時間に合わせてスリープ時間を調整します
time.sleep(15)
# ページの内容を確認することで、CAPTCHAが解決されたかどうかを確認します
if "Verification Success" in bot.page_source:
print("CAPTCHAが正常に解決されました!")
else:
print("CAPTCHAがまだ解決されていません、または失敗しました。")
if __name__ == "__main__":
solve_captcha_and_scrape()
説明:
- Chromeオプションを設定する:
- ブラウザセッションにCapSolver拡張機能を含めます。
- オプションを使ってBotrightを初期化する:
Botright
のインスタンスを作成する際に、options
を渡します。
- ターゲットサイトに移動する:
bot.get()
を使って、reCAPTCHAのあるサイトに移動します。
- CAPTCHAが解決されるまで待つ:
- CapSolver拡張機能は、CAPTCHAを自動的に解決します。
time.sleep()
を使って待ちます。必要に応じて時間を調整してください。
- CAPTCHAの解決を確認する:
- ページの内容を確認して、CAPTCHAが解決されたかどうかを確認します。
重要な注記:
- 拡張機能パス:
extension_path
が、CapSolver拡張機能フォルダーを正しく指していることを確認してください。
- 待ち時間:
- 解決時間は異なる場合があります。
time.sleep()
を適宜調整してください。
- 解決時間は異なる場合があります。
- ドライバの管理:
- BotrightはWebDriverを内部的に管理しています。
options
を渡すと、ドライバがカスタマイズされます。
- BotrightはWebDriverを内部的に管理しています。
- コンプライアンス:
- スクレーピングするウェブサイトの利用規約に準拠していることを確認してください。
スクリプトの実行:
bash
python scrape_with_capsolver_extension.py
ボーナスコード
CapSolverで、トップCAPTCHAソリューションのボーナスコードを取得してください: scrape。これを利用すると、チャージするたびに、回数無制限に5%のボーナスが追加されます。

まとめ
CapSolverブラウザ拡張機能を使ってCapSolverをBotrightに統合することで、ウェブスクレーピングプロジェクトでCAPTCHAの解決を自動化できます。これにより、CAPTCHAで保護されたサイトであっても、データ抽出が途切れることなく行われます。
要点:
- Botrightは、人間らしい相互作用によってウェブ自動化を簡素化します。
- CapSolverブラウザ拡張機能は、Botrightスクリプトに統合できます。
- 拡張機能とブラウザオプションを適切に構成することが重要です。
コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。
もっと見る

Webスクレイピングは合法か? 2025年版包括ガイド
2025年ウェブスクレイピングの法的課題:主要な規制、コンプライアンス、および事例研究

Sora Fujimoto
24-Jan-2025

2025年reCAPTCHA認識のためのトップ5 CAPTCHAソルバー
2025年トップ5のCAPTCHAソルバー(AI駆動型CapSolverによる高速reCAPTCHA認識を含む)を探求し、速度、価格、精度を比較しましょう

Anh Tuan
23-Jan-2025

reCAPTCHA認識とは?初心者向けガイド
reCAPTCHA画像グリッドに苦戦していませんか?CapsolverのAI搭載認識機能が「すべて選択」の課題を瞬時に解決する方法をご覧ください。API統合、ブラウザ拡張機能、CAPTCHA解決を95%以上の精度で自動化するためのプロのヒントを学びましょう。

Ethan Collins
23-Jan-2025

reCAPTCHAサイトキーとは何か、そしてどのように見つけるのか?
reCAPTCHAサイトキーを手動またはCapsolverなどのツールを使って見つける方法、よくある問題の解決策、開発者やウェブスクレイピングのためのCAPTCHA自動化について学びましょう。

Anh Tuan
23-Jan-2025

2025年のWebスクレイピングにおけるCloudflareチャレンジの回避方法
2025年におけるCloudflareチャレンジとTurnstileの回避方法を学び、シームレスなウェブスクレイピングを実現しましょう。Capsolverとの統合、TLSフィンガープリンティングのヒント、CAPTCHA地獄を回避するための一般的なエラー修正方法を紹介します。時間を節約し、データ抽出をスケールアップしましょう。

Ethan Collins
23-Jan-2025

Webスクレイピングにおける画像CAPTCHAの解き方:2025年完全ガイド
CapSolverを使って2025年に画像CAPTCHAを効果的に解決する方法を学ぶ

Sora Fujimoto
23-Jan-2025