検索
ホームページバックエンド開発PHPチュートリアル【Python】Webクローラ(3): HTTPステータスコードの例外処理と分類

まず HTTP 例外処理について話しましょう。
urlopen が応答を処理できない場合、urlError が生成されます。
ただし、ValueError、TypeErrorなどの一般的なPython APIの例外も同時に発生します。
HTTPError は urlError のサブクラスで、通常は特定の HTTP URL で生成されます。

1.URLError
通常、URLError は、ネットワーク接続がない (特定のサーバーへのルーティングがない) か、サーバーが存在しない場合に発生します。

この場合、例外には「reason」属性もあり、これはタプル (不変の配列として理解できます) であり、

にはエラー番号とエラー メッセージが含まれます。

例外処理を体験するために urllib2_test06.py を構築しましょう:

[python] ビュー 普通のコピー

  1. import urllib2
  2. req = urllib2.Request('http://www.baibai.com')
  3. try: urllib2.urlopen(req)
  4. 以外 urllib2.URLError, e:
  5. print e.reason

F5 キーを押すと、印刷された内容が次のように表示されます:

[Errno 11001] getaddrinfo failed

つまり、エラー番号は 11001 で、内容は getaddrinfo failed


2 .HTTPError
サーバー上のすべての HTTP 応答オブジェクトの応答には、数値の「ステータス コード」が含まれています。

ステータス コードは、サーバーがリクエストを完了できないことを示す場合があります。デフォルトのハンドラーは、この応答の一部を処理します。

例: 応答が「リダイレクト」で、クライアントが別のアドレスからドキュメントを取得する必要がある場合、urllib2 がそれを処理します。

その他、処理できないもの、urlopen は HTTPError を生成します。

典型的なエラーには、「404」(ページが見つかりません)、「403」(リクエストが禁止されています)、「401」(検証付きリクエスト)などがあります。

HTTPステータスコードは、HTTPプロトコルによって返される応答のステータスを示します。

たとえば、クライアントがサーバーにリクエストを送信し、リクエストされたリソースが正常に取得された場合、返されるステータス コードは 200 で、応答が成功したことを示します。

要求されたリソースが存在しない場合、通常は 404 エラーが返されます。

HTTPステータスコードは、通常、1から5までの5つの数字から始まり、3桁の整数で構成される次の5種類に分類されます:

---------------- -------------------------------------------------- ----------------------------------

200: リクエスト成功 処理方法: レスポンス内容を取得し、処理してください

201: リクエストが完了し、新しいリソースが作成されます。新しく作成されたリソースの URI は応答エンティティで取得できます。 処理方法: クローラーでは検出されません。

202: リクエストは受け入れられますが、処理はまだ完了していません。

204: リクエストはすでにサーバー側で実行されましたが、新しい情報は返されませんでした。クライアントがユーザー エージェントの場合、この目的のために独自のドキュメント ビューを更新する必要はありません。 処理方法: 破棄

300: このステータス コードは HTTP/1.0 アプリケーションによって直接使用されませんが、3XX タイプの応答のデフォルトの解釈としてのみ使用されます。要求された利用可能なリソースが複数あります。処理方法: プログラムで処理できる場合はさらに処理され、プログラムで処理できない場合は破棄されます。そのため、要求されたリソースには永続的な URL が割り当てられます。処理方法: 割り当てられた URL にリダイレクト

: 要求されたリソースは別の URL に一時的に保存されます 処理方法: 一時 URL にリダイレクト

304 要求されたリソースは更新されていません 処理方法:破棄

400 不正なリクエスト 処理方法:破棄

401 不正な処理方法:破棄

403 禁止 処理方法:破棄

404 なしFound 処理方法: 破棄

5XX 「5」で始まるステータス コードは、サーバーがエラーを検出し、リクエストの実行を続行できないことを示します 処理方法: 破棄

---- -------------------------------------------------- - --------------------------------------

HTTPErrorインスタンスが生成されます整数の「code」属性があり、これはサーバーによって送信された関連エラー番号です。

エラー コード デフォルトのプロセッサがリダイレクト (300 以外の数字) を処理し、100 ~ 299 の範囲の数字が成功を示すため、エラー番号 400 ~ 599 のみが表示されます。
BaseHTTPServer.BaseHTTPRequestHandler.response は、HTTP プロトコルで使用されるすべての応答番号を示す、非常に便利な応答番号辞書です。

エラー番号が生成されると、サーバーはHTTPエラー番号とエラーページを返します。

ページから返される応答オブジェクトの応答として HTTPError インスタンスを使用できます。

これは、error 属性と同様に、read、geturl、info メソッドも含まれていることを意味します。

urllib2_test07.py を構築して体験してみましょう:

[python] ビュー 普通のコピー

  1. import urllib2
  2. req = urllib2.Request('http://bbs.csdn.net/callmewhy')
  3. 試してみる :
  4. urllib2.urlopen(req)
  5. 以外 urllib2.URLError、e:
  6. 印刷 e.code
  7. #print e.read()

F5 を押すと、404 エラー コードが出力されることがわかります。これは、このページが見つからないことを意味します。

3.Wrapping

したがって、HTTPError または URLError に備えたい場合、基本的な方法が 2 つあります。 2番目のものを使用することをお勧めします。

最初の例外処理ソリューションを示すために urllib2_test08.py を構築しましょう:

[python] ビュー 普通のコピー

  1. from urllib2 import Request, urlopen, URLError, HTTPError
  2. req = Request('http://bbs. csdn.net/callmewhy')
  3. 試してみてください:
  4. response = urlopen(req)
  5. HTTPError を除く、e:
  6. print 「サーバーはリクエストを実行できませんでした。」
  7. print 'エラーコード: ', e.code
  8. 以外 URLError、e:
  9. print 「サーバーに到達できませんでした。」
  10. print 'Reason: ', e.reason
  11. else:
  12. print 「例外は発生しませんでした。」
  13. # すべて問題ありません


およびその他の言説と同様に、試してから捕捉し、その内容を印刷します。

ここで注意すべき点、ただし HTTPError は必須です



🎜🎜我们建一urllib2_test09.py来示范一​​下第二种异常处理的方案:🎜🎜🎜🎜🎜🎜🎜🎜🎜[python] view 普通のコピー 🎜🎜
  1. from urllib2 import Request, urlopen, URLError, HTTPError
  2. req = Request('http://bbs. csdn.net/callmewhy')
  3. 試してみてください:
  4. response = urlopen(req)
  5. 以外 URLエラー、e:
  6. if hasattr(e, 'code'):
  7. print 「サーバーはリクエストを実行できませんでした。」
  8. print 'エラーコード: ', e.code
  9. elif hasattr(e, 「理由」) :
  10. print 「サーバーに到達できませんでした。」
  11. print '理由: ', e .reason
  12. else:
  13. print 「例外は発生しませんでした。」
  14. # すべて問題ありません

以上は、[Python] ネットワーク爬虫 (3) を紹介しました。側面の内容を含む、一般的な処理と HTTP 状態コードの分割であり、PHP 教則に関心のある友人の助けになることが望まれます。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPコードの最適化:メモリの使用と実行時間の短縮PHPコードの最適化:メモリの使用と実行時間の短縮May 10, 2025 am 12:04 AM

TooptimizePHPcodeforreducedmemoryusageandexecutiontime,followthesesteps:1)Usereferencesinsteadofcopyinglargedatastructurestoreducememoryconsumption.2)LeveragePHP'sbuilt-infunctionslikearray_mapforfasterexecution.3)Implementcachingmechanisms,suchasAPC

PHPメール:ステップバイステップ送信ガイドPHPメール:ステップバイステップ送信ガイドMay 09, 2025 am 12:14 AM

PhpisusedForsedingEmailsDueToitsIttegration withServerMailServicesAndExternalSmtpproviders、自動化とMarketingCampaign.1)SetupYourphpenvironment withebeBironment witheBiserverandphp、保証

PHP経由で電子メールを送信する方法:例とコードPHP経由で電子メールを送信する方法:例とコードMay 09, 2025 am 12:13 AM

メールを送信する最良の方法は、PHPMailerライブラリを使用することです。 1)Mail()関数を使用することはシンプルですが信頼できないため、電子メールがスパムを入力するか、配信できない場合があります。 2)PHPMailerは、より良い制御と信頼性を提供し、HTMLメール、添付ファイル、SMTP認証をサポートします。 3)SMTP設定が正しく構成されていることを確認し、暗号化(StartTLSやSSL/TLSなど)を使用してセキュリティを強化します。 4)大量の電子メールについては、メールキューシステムを使用してパフォーマンスを最適化することを検討してください。

高度なPHPメール:カスタムヘッダーと機能高度なPHPメール:カスタムヘッダーと機能May 09, 2025 am 12:13 AM

customedersandaddadvancedfeaturesinphpemailentalitylivainability.1)customederadddetadata fortrackingandcategorization.2)htmLemailsallowStingtintintintintintinteractivity.3)添付物質の添付物質の添付

php&smtpでメールを送信するためのガイドphp&smtpでメールを送信するためのガイドMay 09, 2025 am 12:06 AM

PHPとSMTPを使用してメールを送信することは、PHPMailerライブラリを介して実現できます。 1)PHPMailerをインストールして構成する、2)SMTPサーバーの詳細を設定する、3)電子メールコンテンツを定義し、4)メールを送信してエラーを処理します。この方法を使用して、電子メールの信頼性とセキュリティを確保します。

PHPを使用して電子メールを送信する最良の方法は何ですか?PHPを使用して電子メールを送信する最良の方法は何ですか?May 08, 2025 am 12:21 AM

BestappRoachforseminginphpisusingthephpmailerlibrarydueToitsReliability、featurrichness、andeaseofuse.phpmailerSupportssmtpは、detairederorhandlingを提供します

PHPでの依存関係注射のベストプラクティスPHPでの依存関係注射のベストプラクティスMay 08, 2025 am 12:21 AM

依存関係注射(DI)を使用する理由は、コードのゆるい結合、テスト可能性、および保守性を促進するためです。 1)コンストラクターを使用して依存関係を注入します。2)サービスロケーターの使用を避け、3)依存関係噴射コンテナを使用して依存関係を管理する、4)依存関係を注入することでテスト可能性を向上させる、5)注入依存性を回避、6)パフォーマンスに対するDIの影響を考慮します。

PHPパフォーマンスのチューニングのヒントとコツPHPパフォーマンスのチューニングのヒントとコツMay 08, 2025 am 12:20 AM

phpperformancetuningisucial cuseenhancess andandandadsand。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール