メインコンテンツへスキップ

Route

page.route() または browser_context.route() でネットワークルートが設定されるたびに、Route オブジェクトはルートを処理できます。

ネットワークの詳細をご覧ください。


メソッド

abort

v1.9 より前に追加 route.abort

ルートのリクエストを中止します。

使用方法

route.abort()
route.abort(**kwargs)

引数

  • error_code str (オプション)#

    オプションのエラーコード。デフォルトは failed で、次のいずれかになります。

    • 'aborted' - 操作が中止されました(ユーザー操作によるもの)
    • 'accessdenied' - ネットワーク以外のリソースへのアクセス許可が拒否されました
    • 'addressunreachable' - IP アドレスに到達できません。これは通常、指定されたホストまたはネットワークへのルートがないことを意味します。
    • 'blockedbyclient' - クライアントがリクエストをブロックすることを選択しました。
    • 'blockedbyresponse' - レスポンスが満たされていない要件 ('X-Frame-Options' および 'Content-Security-Policy' 祖先チェックなど) と共に配信されたため、リクエストが失敗しました。
    • 'connectionaborted' - 送信されたデータに対する ACK を受信しなかった結果、接続がタイムアウトしました。
    • 'connectionclosed' - 接続が閉じられました (TCP FIN に対応)。
    • 'connectionfailed' - 接続試行が失敗しました。
    • 'connectionrefused' - 接続試行が拒否されました。
    • 'connectionreset' - 接続がリセットされました (TCP RST に対応)。
    • 'internetdisconnected' - インターネット接続が失われました。
    • 'namenotresolved' - ホスト名を解決できませんでした。
    • 'timedout' - 操作がタイムアウトしました。
    • 'failed' - 一般的なエラーが発生しました。

戻り値


continue_

v1.9 より前に追加 route.continue_

オプションのオーバーライドを使用して、ルートのリクエストをネットワークに送信します。

使用方法

def handle(route, request):
# override headers
headers = {
**request.headers,
"foo": "foo-value", # set "foo" header
"bar": None # remove "bar" header
}
route.continue_(headers=headers)

page.route("**/*", handle)

引数

  • headers Dict[str, str] (オプション)#

    設定されている場合、リクエストの HTTP ヘッダーを変更します。ヘッダー値は文字列に変換されます。

  • method str (オプション)#

    設定されている場合、リクエストメソッド (例: GET または POST) を変更します。

  • post_data str | bytes | Dict (オプション)#

    設定されている場合、リクエストのポストデータを変更します。

  • url str (オプション)#

    設定されている場合、リクエスト URL を変更します。新しい URL は元の URL と同じプロトコルである必要があります。

戻り値

詳細

headers オプションは、ルーティングされたリクエストと、それが開始するすべてのリダイレクトの両方に適用されます。ただし、urlmethod、および post_data は、元のリクエストにのみ適用され、リダイレクトされたリクエストには引き継がれません。

route.continue_() は、リクエストをすぐにネットワークに送信し、他の一致するハンドラーは呼び出されません。チェーン内の次の一致するハンドラーを呼び出す場合は、route.fallback() を使用してください。


fallback

追加バージョン: v1.23 route.fallback

オプションのオーバーライドを使用して、ルートのリクエストを続行します。このメソッドは route.continue_() と似ていますが、リクエストを送信する前に、他の一致するハンドラーが呼び出される点が異なります。

使用方法

複数のルートが指定されたパターンに一致する場合、それらは登録された順序と逆の順序で実行されます。これにより、最後に登録されたルートは常に以前のすべてのルートをオーバーライドできます。以下の例では、リクエストは一番下のハンドラーによって最初に処理され、次に前のハンドラーにフォールバックし、最後に最初に登録されたルートによって中止されます。

page.route("**/*", lambda route: route.abort())  # Runs last.
page.route("**/*", lambda route: route.fallback()) # Runs second.
page.route("**/*", lambda route: route.fallback()) # Runs first.

複数のルートを登録すると、たとえば API 呼び出しとページリソース、または GET リクエストと POST リクエストなど、さまざまな種類のリクエストを個別のハンドラーで処理する場合に役立ちます。以下の例を参照してください。

# Handle GET requests.
def handle_get(route):
if route.request.method != "GET":
route.fallback()
return
# Handling GET only.
# ...

# Handle POST requests.
def handle_post(route):
if route.request.method != "POST":
route.fallback()
return
# Handling POST only.
# ...

page.route("**/*", handle_get)
page.route("**/*", handle_post)

後続のハンドラーにフォールバックしながらリクエストを変更することもできます。これにより、中間ルートハンドラーはリクエストの url、method、headers、および postData を変更できます。

def handle(route, request):
# override headers
headers = {
**request.headers,
"foo": "foo-value", # set "foo" header
"bar": None # remove "bar" header
}
route.fallback(headers=headers)

page.route("**/*", handle)

リクエストをすぐにネットワークに送信するには、route.continue_() を使用してください。その場合、他の一致するハンドラーは呼び出されません。

引数

  • headers Dict[str, str] (オプション)#

    設定されている場合、リクエストの HTTP ヘッダーを変更します。ヘッダー値は文字列に変換されます。

  • method str (オプション)#

    設定されている場合、リクエストメソッド (例: GET または POST) を変更します。

  • post_data str | bytes | Dict (オプション)#

    設定されている場合、リクエストのポストデータを変更します。

  • url str (オプション)#

    設定されている場合、リクエスト URL を変更します。新しい URL は元の URL と同じプロトコルである必要があります。URL を変更してもルートマッチングには影響しません。すべてのルートは元のリクエスト URL を使用してマッチングされます。

戻り値


fetch

追加バージョン: v1.29 route.fetch

リクエストを実行して、レスポンスを変更してから fulfill できるように、fulfill せずに結果を取得します。

使用方法

def handle(route):
response = route.fetch()
json = response.json()
json["message"]["big_red_dog"] = []
route.fulfill(response=response, json=json)

page.route("https://dog.ceo/api/breeds/list/all", handle)

引数

  • headers Dict[str, str] (オプション)#

    設定されている場合、リクエストの HTTP ヘッダーを変更します。ヘッダー値は文字列に変換されます。

  • max_redirects int (オプション)追加バージョン: v1.31#

    自動的に追跡されるリクエストリダイレクトの最大数。数を超えるとエラーがスローされます。デフォルトは 20 です。リダイレクトを追跡しない場合は 0 を渡します。

  • max_retries int (オプション)追加バージョン: v1.46#

    ネットワークエラーを再試行する最大回数。現在、ECONNRESET エラーのみが再試行されます。HTTP レスポンスコードに基づいて再試行しません。制限を超えるとエラーがスローされます。デフォルトは 0 - 再試行なし。

  • method str (オプション)#

    設定されている場合、リクエストメソッド (例: GET または POST) を変更します。

  • post_data str | bytes | Dict (オプション)#

    リクエストのポストデータを設定できます。data パラメーターがオブジェクトの場合、json 文字列にシリアル化され、content-type ヘッダーが明示的に設定されていない場合は application/json に設定されます。それ以外の場合、content-type ヘッダーは明示的に設定されていない場合は application/octet-stream に設定されます。

  • timeout float (オプション)追加バージョン: v1.33#

    リクエストタイムアウト(ミリ秒単位)。デフォルトは 30000 (30 秒) です。タイムアウトを無効にするには 0 を渡します。

  • url str (オプション)#

    設定されている場合、リクエスト URL を変更します。新しい URL は元の URL と同じプロトコルである必要があります。

戻り値

詳細

headers オプションは、フェッチされたリクエストと、それによって開始されるすべてのリダイレクトに適用されることに注意してください。headers を元のリクエストにのみ適用し、リダイレクトには適用しない場合は、代わりに route.continue_() を検討してください。


fulfill

v1.9 より前に追加 route.fulfill

指定されたレスポンスでルートのリクエストを fulfill します。

使用方法

すべてのリクエストを 404 レスポンスで fulfill する例

page.route("**/*", lambda route: route.fulfill(
status=404,
content_type="text/plain",
body="not found!"))

静的ファイルを提供する例

page.route("**/xhr_endpoint", lambda route: route.fulfill(path="mock_data.json"))

引数

  • body str | bytes (オプション)#

    レスポンスボディ。

  • content_type str (オプション)#

    設定されている場合、Content-Type レスポンスヘッダーの設定と同じです。

  • headers Dict[str, str] (オプション)#

    レスポンスヘッダー。ヘッダー値は文字列に変換されます。

  • json Dict (オプション)追加バージョン: v1.29#

    JSON レスポンス。このメソッドは、コンテンツタイプが設定されていない場合は application/json に設定します。

  • path Union[str, pathlib.Path] (オプション)#

    応答するファイルパス。コンテンツタイプはファイル拡張子から推測されます。path が相対パスの場合、現在の作業ディレクトリに対する相対パスとして解決されます。

  • response APIResponse (オプション)追加バージョン: v1.15#

    ルートのリクエストを fulfill する APIResponse。レスポンスの個々のフィールド (ヘッダーなど) は、fulfill オプションを使用してオーバーライドできます。

  • status int (オプション)#

    レスポンスステータスコード。デフォルトは 200 です。

戻り値


プロパティ

request

v1.9 より前に追加 route.request

ルーティングされるリクエスト。

使用方法

route.request

戻り値