2025年、Pydollでウェブスクレイピング:ステップバイステップガイド

JavaScriptを多用するウェブサイトのスクレイピングにPydollを使用する方法、Cloudflareをバイパスする方法、Bright Dataのような回転プロキシを使用してスケーリングする方法をご紹介します。
7 分読
Web Scraping With Pydoll blog image

このガイドで、あなたは学ぶだろう:

  • Pydollとは?
  • JavaScriptを使用したウェブサイトをスクレイピングする方法
  • Cloudflareの保護を回避する方法
  • 最大の限界
  • 回転プロキシ統合を使用してこれらの制限を克服する方法
  • Pydollに代わるPythonベースのトップソフト

さあ、飛び込もう!

パイドール入門

Pydollとは何か、どのように動作するのか、PythonのWebスクレイピング・ライブラリとして何を提供するのかをご覧ください。

それは何か

Pydollは、Webスクレイピング、テスト、反復タスクの自動化のために構築されたPythonブラウザ自動化ライブラリです。Pydollの特徴は、従来のWebドライバを必要としないことです。具体的には、DevToolsプロトコルを通してブラウザに直接接続します。

Pydollの最初の安定リリースであるバージョン1.0は2025年2月にリリースされた。つまり、ウェブスクレイピングの分野では比較的新しいプレイヤーということになる。にもかかわらず、すでにGitHubで3,000以上のスターを獲得し、強い勢いを得ている:

pydoll GitHubのスターヒストリー

お分かりのように、このライブラリはPythonのウェブスクレイピングコミュニティで人気を集めている。

特徴

Pydollが提供する主な機能をまとめました:

  • ウェブドライバをゼロに:ブラウザのドライバ依存をなくし、バージョンの不一致の問題を減らし、Chromiumベースの自動化のセットアップを簡素化します。
  • 非同期ファースト・アーキテクチャ:高い並行性、効率的なメモリ使用、最新のPython開発パターンを実現するために、完全にasyncioで構築されています。
  • 人間のようなインタラクションリアルなタイピング、マウスの動き、クリックを模倣し、自動化時のボット検出を低減します。
  • イベント駆動機能:ブラウザ、DOM、ネットワーク、ライフサイクルイベントへのリアルタイムな反応を可能にし、レスポンシブな自動化を実現します。
  • マルチブラウザ対応:Chrome、Edge、その他のChromiumブラウザと互換性があり、同じ統一インターフェースを使用します。
  • スクリーンショットとPDFエクスポート:ページ全体、特定の要素をキャプチャしたり、読み込んだウェブページから高品質のPDFを生成したりできます。
  • ネイティブCloudflareバイパス:IPレピュテーションが高い場合、Cloudflareアンチボットをサードパーティのサービスなしで自動的にバイパスし、信頼できるブラウザセッションを模倣します。
  • 並行スクレイピング:複数のページやウェブサイトを並行してスクレイピングし、総実行時間を劇的に短縮します。
  • 高度なキーボードコントロール:タイミング、修飾子、特殊キーの取り扱いを正確に制御し、実際のユーザーのタイピングをシミュレートします。
  • 強力なイベントシステム:ネットワークリクエスト、ページロード、カスタムブラウザイベントをリアルタイムで監視、処理します。
  • ファイルアップロードのサポート:直接入力と対話型ファイル選択ダイアログの両方を使用して、ファイルのアップロードを自動化します。
  • プロキシの統合:IPローテーション、ジオターゲティング、スクレイピング中のレート制限回避のためのプロキシ使用をサポートします。
  • リクエストの傍受:高度な自動化とスクレイピング制御のために、HTTPリクエストとレスポンスを傍受、変更、ブロックします。

詳しくは公式ドキュメントをご覧ください。

ウェブスクレイピングにPydollを使う:完全なチュートリアル

このチュートリアルでは、Pydollを使って非同期でJavaScriptを使用したバージョンの “Quotes to Scrape“からデータをスクレイピングする方法を学びます:

2秒後にデータをロードするターゲットサイト

このページでは、JavaScriptを使用して、短い遅延の後に引用要素を動的にレンダリングします。したがって、従来のスクレイピングツールはそのままでは動作しません。このページからコンテンツを抽出するには、Pydollのようなブラウザ自動化ツールが必要です。

以下の手順に従って、”Quotes to Scrape “から引用データを動的に抽出するPydollウェブスクレーパーを構築してください。

ステップ1:プロジェクトのセットアップ

始める前に、あなたのマシンにPython 3+がインストールされていることを確認してください。そうでなければ、ダウンロードしてインストール手順に従ってください。

次に、以下のコマンドを実行して、スクレイピング・プロジェクト用のフォルダを作成する:

mkdir pydoll-scraper

pydoll-scraperディレクトリがプロジェクトフォルダとなる。

ターミナルでそのフォルダに移動し、その中でPython仮想環境を初期化する:

cd pydoll-scraper
python -m venv venv

お気に入りのPython IDEでプロジェクトフォルダを読み込みます。Python拡張機能付きのVisual Studio Codeや PyCharm Community Editionでも構いません。

プロジェクトのフォルダにscraper.pyファイルを作成します:

Pydollを使ったウェブスクレイピングのプロジェクトファイル構造

現時点では、scraper.pyはただの空のPythonスクリプトです。それでも、すぐにデータ解析ロジックが含まれるようになります。

次に、IDEのターミナルで仮想環境を有効にする。LinuxまたはmacOSでは、以下を実行する:

source venv/bin/activate

同様に、Windowsでは、起動します:

venv/Scripts/activate

すばらしい!これであなたのPython環境はPydollを使ったWebスクレイピングのための準備が整いました。

ステップ2:Pydollのセットアップ

有効化された仮想環境で、pydoll-pythonパッケージを使ってPydollをインストールする:

pip install pydoll-python

さて、以下のロジックをscraper.pyファイルに追加して Pydoll を使い始めましょう:

import asyncio
from pydoll.browser.chrome import Chrome

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # scraping logic...

# Execute the async scraping function
asyncio.run(main())

PydollはWebスクレイピングのための非同期APIを提供し、Pythonのasyncio標準ライブラリの使用を必要とすることに注意してください。

素晴らしい!これで基本的なPydollスクリプトができました。

ステップ #3: ターゲットサイトへの接続

ページ・オブジェクトが提供するgo_to()メソッドを呼び出し、ターゲット・サイトに移動する:

await page.go_to("https://quotes.toscrape.com/js-delayed/?delay=2000")

delay=2000クエリパラメータは、2秒間の遅延の後、目的のデータを動的にロードするようページに指示します。これは対象のサンドボックスサイトの機能で、動的なスクレイピングの動作をテストするのに役立つように設計されています。

上記のスクリプトを実行してみてください。すべてが正しく動作していれば、Pydollが起動します:

  1. クロームインスタンスを起動する
  2. ターゲット・サイトに移動する
  3. ブラウザウィンドウを即座に閉じる-スクリプトにはまだ追加のロジックがないため

具体的には、閉鎖される前に見ることができるはずのものだ:

Pydollが制御するChromeインスタンスによって読み込まれるターゲットページ

完璧です!待機ロジックを追加する準備ができました。

ステップ #4: HTML要素が表示されるのを待つ

前のステップの最後の画像を見てください。これはChromeインスタンスでPydollによってコントロールされているページの内容を表しています。完全に真っ白で、データが読み込まれていないことにお気づきでしょう。

その理由は、ターゲット・サイトが2秒間の遅延の後に動的にデータをレンダリングするからである。さて、この遅延は例のサイト特有のものだ。それでも、ページのレンダリングを待たなければならないのは、SPA(シングル・ページ・アプリケーション)やAJAXに依存する他の動的なウェブサイトをスクレイピングするときによくあるシナリオだ。

詳しくはPythonを使った動的ウェブサイトのスクレイピングの記事をご覧ください。

そのようなよくあるシナリオに対処するために、Pydollはこのメソッドを通じて組み込みの待機メカニズムを提供します:

  • wait_element():ひとつの要素が現れるのを待つ (タイムアウトをサポートする)

上記の方法は、CSSセレクタやXPath式などをサポートしており、SeleniumのByオブジェクトがどのように動作するかと似ている。

ターゲットのページのHTMLに精通する時が来た。ブラウザでページを開き、引用符が読み込まれるのを待って、引用符のひとつを右クリックし、”Inspect “オプションを選択する:

引用要素のHTML

DevToolsパネルでは、各引用符がクラス引用符を持つ

で囲まれていることがわかります。つまり、CSSセレクタを使用してそれらをターゲットにすることができます:

.quote

次に、Pydollを使って、これらの要素が現れるのを待ってから続行する:

await page.wait_element(By.CSS_SELECTOR, ".quote", timeout=3)

インポートをお忘れなく

from pydoll.constants import By

もう一度スクリプトを実行すると、今度はPydollがブラウザを閉じる前に引用要素の読み込みを待っていることがわかります。お見事!

ステップ5:ウェブスクレイピングの準備

ターゲット・ページには引用文が1つだけではないことを覚えておいてほしい。それら全てをスクレイピングしたいので、そのデータを保持するデータ構造が必要です。単純な配列が完璧に機能するので、それを初期化する:

quotes = []

ページから要素を見つけるために、Pydollは2つの便利な方法を提供します:

  • find_element():最初にマッチする要素を見つける
  • find_elements():マッチするすべての要素を見つける

wait_element()と同様に、これらのメソッドはByオブジェクトを使ったセレクタを受け付ける。

そこで、ページ上のすべての引用要素を選択する:

quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")

次に、要素をループし、スクレイピング・ロジックを適用する準備をする:

for quote_element in quote_elements:
  # Scraping logic...

素晴らしい!データ抽出ロジックの時間だ。

ステップ#6:データ解析ロジックの実装

まず、1つの引用要素を検査することから始める:

引用要素のHTML

上のHTMLからわかるように、1つの引用符要素には以下が含まれる:

  • .textノード内のテキスト引用
  • .author要素の作者
  • .tag要素内のタグのリスト

スクレイピング・ロジックを実装して、これらの要素を選択し、そこから目的のデータを抽出する:

# Extract the quote text (and remove curly quotes)
text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
text = (await text_element.get_element_text()).replace("“", "").replace("”", "")

# Extract the author name
author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
author = await author_element.get_element_text()

# Extract all associated tags
tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
tags = [await tag_element.get_element_text() for tag_element in tag_elements]

注意replace()メソッドは、抽出された引用符テキストから不要な中二重引用符を取り除きます。

次に、スクレイピングされたデータを利用して新しい辞書オブジェクトを作成し、それをquotes配列に追加する:

# Populate a new quote with the scraped data
quote = {
    "text": text,
    "author": author,
    "tags": tags
}
# Append the extracted quote to the list
quotes.append(quote)

よくやった!あとはスクレイピングしたデータをCSVにエクスポートするだけだ。

ステップ#7: CSVへのエクスポート

現在、スクレイピングされたデータはPythonのリストに保存されています。CSVのような人間が読める形式にエクスポートすることで、他の人と共有したり探索したりしやすくしましょう。

Pythonを使ってquotes.csvという新しいファイルを作成し、そこにスクレイピングしたデータを入れる:

with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
            # Add the header
            fieldnames = ["text", "author", "tags"]
            writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

            # Populate the output file with the scraped data
            writer.writeheader()
            for quote in quotes:
                writer.writerow(quote)

Python Standard Libraryからcsvをインポートすることを忘れないでください:

import csv

ミッション完了!あなたのパイドールスクレーパーは実行の準備ができている。

ステップ8:すべてをまとめる

scraper.pyファイルには次の内容が含まれているはずです:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By
import csv

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Navigate to the target page
        await page.go_to("https://quotes.toscrape.com/js-delayed/?delay=2000")

        # Wait up to 3 seconds for the quote elements to appear
        await page.wait_element(By.CSS_SELECTOR, ".quote", timeout=3)

        # Where to store the scraped data
        quotes = []

        # Select all quote elements
        quote_elements = await page.find_elements(By.CSS_SELECTOR, ".quote")

        # Iterate over them and scrape data from them
        for quote_element in quote_elements:
            # Extract the quote text (and remove curly quotes)
            text_element = await quote_element.find_element(By.CSS_SELECTOR, ".text")
            text = (await text_element.get_element_text()).replace("“", "").replace("”", "")

            # Extract the author
            author_element = await quote_element.find_element(By.CSS_SELECTOR, ".author")
            author = await author_element.get_element_text()

            # Extract all tags
            tag_elements = await quote_element.find_elements(By.CSS_SELECTOR, ".tag")
            tags = [await tag_element.get_element_text() for tag_element in tag_elements]

            # Populate a new quote with the scraped data
            quote = {
                "text": text,
                "author": author,
                "tags": tags
            }
            # Append the extracted quote to the list
            quotes.append(quote)

    # Export the scraped data to CSV
    with open("quotes.csv", "w", newline="", encoding="utf-8") as csvfile:
                # Add the header
                fieldnames = ["text", "author", "tags"]
                writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

                # Populate the output file with the scraped data
                writer.writeheader()
                for quote in quotes:
                    writer.writerow(quote)

# Execute the async scraping function
asyncio.run(main())

すごい!60行以下のコードで、Pydollを使ってウェブスクレイピングボットを構築することができます。

上記のスクリプトを実行してテストする:

python scraper.py

実行が終わると、プロジェクトフォルダにquotes.csvファイルが現れます。それを開くと、スクレイピングされたデータがきちんと整理されているのがわかります:

quotes.csvの出力データ

出来上がり!Pydollウェブスクレイピングスクリプトは期待通りに動作します。

PydollでCloudflareを回避する

ブラウザ自動化ツールでサイトとやりとりするとき、直面する最大の課題のひとつがウェブ・アプリケーション・ファイアウォール(WAF)だ。Cloudflareのようなソリューションは、通常、高度なアンチボットプロテクションを備えている。

自動化されたブラウザからのリクエストと疑われる場合、これらのシステムは通常CAPTCHAを表示します。場合によっては、サイトへの初回訪問時にすべてのユーザーに表示されます。

PythonでCAPTCHAを回避するのは簡単ではありません。しかし、Cloudflareを騙してあなたが本物のユーザーであると思わせ、そもそもCAPTCHAを表示させないようにする方法があります。ここでPydollの出番です。まさにそのための専用APIを提供しています。

どのように機能するかを示すために、ScrapingCourseサイトの「Antibot Challenge」テスト・ページを使用する:

対象ページのCloudflare自動検証

ご覧のように、このページは常にCloudflare JavaScript Challengeを実行します。バイパスされると、ボット対策が破られたことを確認するためのサンプルコンテンツが表示されます。

PydollはCloudflareを処理する2つのアプローチを公開している:

  1. コンテキストマネージャーアプローチ:アンチボットのチャレンジを同期的に処理し、チャレンジが解決されるまでスクリプトの実行を一時停止する。
  2. バックグラウンド処理アプローチ:アンチボットをバックグラウンドで非同期に処理する。

この2つの方法について説明する。しかし、公式ドキュメントにも記載されているように、Cloudflareの迂回が常に機能するとは限らないことに留意してください。それは、IPレピュテーションやナビゲーション履歴のような問題があるからです。

より高度なテクニックについては、Cloudflareで保護されたサイトのスクレイピングに関する完全なチュートリアルをお読みください。

コンテキスト・マネージャーのアプローチ

Pydollに自動的にCloudflareのアンチボットチャレンジを処理させるには、次のようにexpect_and_bypass_cloudflare_captcha()メソッドを使います:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.constants import By

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Wait for the Cloudflare challenge to be executed
        async with page.expect_and_bypass_cloudflare_captcha():
            # Connect to the Cloudflare-protected page:
            await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
            print("Waiting for Cloudflare anti-bot to be handled...")

        # This code runs only after the anti-bot is successfully bypassed
        print("Cloudflare anti-bot bypassed! Continuing with automation...")

        # Print the text message on the success page
        await page.wait_element(By.CSS_SELECTOR, "#challenge-title", timeout=3)
        success_element = await page.find_element(By.CSS_SELECTOR, "#challenge-title")
        success_text = await success_element.get_element_text()
        print(success_text)

asyncio.run(main())

このスクリプトを実行すると、クロームのウィンドウは自動的にチャレンジを回避し、ターゲットページを読み込みます。

出力はこうなる:

Waiting for Cloudflare anti-bot to be handled...
Cloudflare anti-bot bypassed! Continuing with automation...
You bypassed the Antibot challenge! :D

バックグラウンド処理のアプローチ

PydollがCloudflareのチャレンジを処理している間、スクリプトの実行をブロックしたくない場合は、enable_auto_solve_cloudflare_captcha( )disable_auto_solve_cloudflare_captcha()メソッドをこのように使います:

import asyncio
from pydoll.browser import Chrome
from pydoll.constants import By

async def main():
    async with Chrome() as browser:
        # Launch the Chrome browser and open a new page
        await browser.start()
        page = await browser.get_page()

        # Enable automatic captcha solving before navigating
        await page.enable_auto_solve_cloudflare_captcha()

        # Connect to the Cloudflare-protected page:
        await page.go_to("https://www.scrapingcourse.com/antibot-challenge")
        print("Page loaded, Cloudflare anti-bot will be handled in the background...")

        # Disable anti-bot auto-solving when no longer needed
        await page.disable_auto_solve_cloudflare_captcha()

        # Print the text message on the success page
        await page.wait_element(By.CSS_SELECTOR, "#challenge-title", timeout=3)
        success_element = await page.find_element(By.CSS_SELECTOR, "#challenge-title")
        success_text = await success_element.get_element_text()
        print(success_text)

asyncio.run(main())

このアプローチにより、PydollがバックグラウンドでCloudflareのアンチボットの課題を解決している間、スクレイパーは他の処理を行うことができます。

今回の出力はこうなる:

Page loaded, Cloudflare anti-bot will be handled in the background...
You bypassed the Antibot challenge! :D

ウェブスクレイピングのこのアプローチの限界

Pydollやその他のスクレイピングツールでは、あまりにも多くのリクエストを送信すると、ターゲットサーバーによってブロックされる可能性が高くなります。これは、ほとんどのウェブサイトがボット(スクレイピングスクリプトのようなもの)がリクエストでサーバーを圧倒するのを防ぐためにレート制限を実装しているために起こります。

これは、一般的なアンチスクレイピングとアンチDDoSのテクニックである。結局のところ、誰も自分のサイトが自動化されたトラフィックで溢れることを望んでいない。

robots.txtを尊重するなどのベストプラクティスに従っている場合でも、同じIPアドレスから多くのリクエストを行うと疑われる可能性があります。その結果、403 Forbiddenや 429 Too Many Requestsエラーに遭遇するかもしれません。

これを避ける最善の方法は、ウェブプロキシを使ってIPアドレスをローテーションすることだ。

ウェブプロキシは、スクレイパーとターゲットウェブサイトの間の仲介役として機能する。あなたのリクエストを転送し、レスポンスを返すことで、ターゲットサイトからは、トラフィックがあなたの実際のマシンではなく、プロキシから来ているかのように見える。

このテクニックは、あなたの本当のIPを隠すのに役立つだけでなく、地理的制限を回避したり、他の多くの使用例にも役立ちます。

現在、プロキシにはいくつかの種類があります。ブロックされないようにするには、Bright Dataのような本物の回転プロキシを提供する高品質のプロバイダーが必要です。

次のセクションでは、Bright Dataの回転プロキシをPydollと統合し、ウェブページをより効果的に、特に大規模にスクレイピングする方法をご紹介します。

PydollとBright Dataの回転プロキシの統合

Bright Dataは、フォーチュン500社や20,000以上の顧客から信頼されている世界最大級のプロキシネットワークを管理しています。そのプロキシネットワークには以下が含まれます:

以下の手順に従って、ブライトデータの住宅用プロキシをPydollで使用する方法を学んでください。

まだアカウントをお持ちでない方は、Bright Dataにご登録ください。ログインしてダッシュボードにアクセスしてください:

ブライト・データのダッシュボード

ダッシュボードから「プロキシ製品を取得」ボタンをクリックします:

プロキシとスクレイピング・インフラストラクチャ」ページにリダイレクトされます:

プロキシとスクレイピング・インフラストラクチャ」ページ

表で「住宅」の行を見つけ、クリックする:

住宅」行をクリック

住宅用プロキシの設定ページに移動します:

住宅」ページ

これが初めての場合は、セットアップウィザードに従って、ニーズに応じてプロキシを設定します。ヘルプについては、24時間365日のサポートに連絡してください。

Overview “タブに行き、プロキシのホスト、ポート、ユーザー名、パスワードを探す:

プロキシの認証情報

プロキシのURLを作成するには、これらの詳細を使用します:

proxy_url = "<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>";

プレースホルダ (, , , ) を実際のプロキシ認証情報に置き換えてください。

スイッチを “Off “から “On “に切り替えて、プロキシ製品を有効にしてください:

アクティベーション・トグルをクリックする

プロキシの準備ができたので、組み込みのプロキシ設定機能を使ってPydollにプロキシを統合する方法を説明します:

import asyncio
from pydoll.browser.chrome import Chrome
from pydoll.browser.options import Options
from pydoll.constants import By
import traceback

async def main():
    # Create browser options
    options = Options()

    # The URL of your Bright Data proxy
    proxy_url = "<brightdata_proxy_username>:<brightdata_proxy_password>@<brightdata_proxy_host>:<brightdata_proxy_port>" # Replace it with your proxy URL

    # Configure the proxy integration option
    options.add_argument(f"--proxy-server={proxy_url}")

    # To avoid potential SSL errors
    options.add_argument("--ignore-certificate-errors")

    # Start browser with proxy configuration
    async with Chrome(options=options) as browser:
        await browser.start()
        page = await browser.get_page()

        # Visit a special page that returns the IP of the caller
        await page.go_to("https://httpbin.io/ip")

        # Extract the page content containing only the IP of the incoming
        # request and print it
        body_element = await page.find_element(By.CSS_SELECTOR, "body")
        body_text = await body_element.get_element_text()
        print(f"Current IP address: {body_text}")

# Execute the async scraping function
asyncio.run(main())

このスクリプトを実行するたびに、Bright Dataのプロキシローテーションのおかげで、異なる終了IPアドレスが表示されます。

: 通常、Chrome の--proxy-serverフラグは認証済みプロキシをサポートしていません。しかし、Pydollの高度なプロキシマネージャはこの制限を無効にし、パスワードで保護されたプロキシサーバを使用できるようにします。

Bright Dataのローテーションプロキシにより、Pydollのプロキシローテーションはシンプルで、信頼性が高く、スケーラブルです!

ウェブスクレイピングのためのPydollに代わるもの

Pydollは間違いなく強力なウェブ・スクレイピング・ライブラリであり、特にアンチボット・バイパス機能を内蔵したブラウザの自動化に適している。しかし、このゲームの唯一のツールではない。

以下は、検討する価値のあるPydollの代替品です:

  • SeleniumBase:Selenium/WebDriverのAPIの上に構築されたPythonフレームワークで、Web自動化のためのプロ級のツールキットを提供します。エンドツーエンドのテストから高度なスクレイピングワークフローまで、すべてをサポートします。
  • 検出されないChromeDriver:Imperva、DataDome、Distil Networksのような一般的なアンチボットサービスによる検出を回避するように設計されたChromeDriverのパッチバージョン。Selenium使用時のステルススクレイピングに最適。

あらゆるウェブサイトに対応し、複数のプログラミング言語をサポートする、より汎用的なウェブスクレイピングソリューションをお探しなら、当社のスクレイピングサービスをご覧ください:

結論

このプロキシ統合チュートリアルでは、Pydollとは何か、どのように動作するかを学びました。JavaScriptを使ったWebサイトでのWebスクレイピングのためにPydollを使う方法を調べ、プロキシ統合によってPydollの主な制限に対処する方法を見ました。
プロキシを統合する方法を見ました。

また、IPローテーションの仕組みなしにPydollを使用すると、信頼できない結果につながる理由もご理解いただけたと思います。安定したパフォーマンス、強化されたセキュリティ、スケーラビリティのためには、信頼できるプロキシプロバイダを選択する必要があります。市場で最高のプロキシプロバイダーであるBright Dataに直接アクセスして、時間と労力を節約しましょう。

アカウントを作成し、今すぐ当社のプロキシを無料でお試しください!

クレジットカードは必要ありません