次の内容を始める前に、まず urllib2 の 2 つのメソッド、info と geturl について説明しましょう
urlopen によって返される応答オブジェクトの応答 (または HTTPError インスタンス) には、2 つの非常に便利なメソッド info() と geturl() があります
1。 geturl():
これは取得した実際の URL を返します。urlopen (またはオープナー オブジェクトによって使用されるもの) にはリダイレクトがある可能性があるため、これは非常に便利です。取得したURLはリクエストURLと異なる場合があります。
Renren のハイパーリンクを例に挙げます。
元の URL とリダイレクトされたリンクを比較するために urllib2_test10.py を構築します。
from urllib2 import Request, urlopen, URLError, HTTPError old_url = 'http://rrurl.cn/b1UZuP' req = Request(old_url) response = urlopen(req) print 'Old url :' + old_url print 'Real url :' + response.geturl()
実行後、実際のリンクが指す URL を確認できます。
2.info():
これは、取得したページの状況を記述するオブジェクトの辞書オブジェクトを返します。通常、サーバーによって送信される特定のヘッダー。現在は httplib.HTTPMessage のインスタンスです。
クラシックヘッダーには、「Content-length」、「Content-type」、およびその他のコンテンツが含まれます。
情報アプリケーションをテストするために urllib2_test11.py を構築します:
from urllib2 import Request, urlopen, URLError, HTTPError old_url = 'http://www.baidu.com' req = Request(old_url) response = urlopen(req) print 'Info():' print response.info()
実行結果は次のとおりです。ページの関連情報を確認できます:
urllib2 の 2 つについて話しましょう重要な概念: オープナーとハンドラー。
1.オープナー:
URL を取得するときは、オープナー (urllib2.OpenerDirector のインスタンス) を使用します。
通常、urlopen を通じてデフォルトのオープナーを使用します。
ただし、パーソナライズされたオープナーを作成することはできます。
2.ハンドル:
オープナーはプロセッサハンドラーを使用し、すべての「重い」作業はハンドラーによって処理されます。
各ハンドラーは、特定のプロトコルを介して URL を開く方法、または URL を開く際のさまざまな側面を処理する方法を知っています。
たとえば、HTTP リダイレクトまたは HTTP Cookie。
特定のハンドラーで URL を取得したい場合は、オープナーを作成する必要があります。たとえば、Cookie を処理できるオープナーを取得したり、リダイレクトしないオープナーを取得したりすることができます。
オープナーを作成するには、OpenerDirector、
をインスタンス化し、.add_handler(some_handler_instance) を呼び出します。
同様に、build_opener を使用することもできます。これは、関数呼び出しを 1 回行うだけで、オープナー オブジェクトを作成するためのより便利な関数です。
build_opener はデフォルトでいくつかのプロセッサを追加しますが、デフォルトのプロセッサを簡単に追加または更新する方法を提供します。
プロキシ、検証、およびその他の一般的だがやや特殊なケースを処理する必要があるその他のハンドラー。
install_opener は、(グローバル) デフォルトのオープナーを作成するために使用されます。これは、urlopen を呼び出すと、インストールしたオープナーが使用されることを意味します。
Opener オブジェクトには open メソッドがあります。
このメソッドは、urlopen 関数と同様に URL を取得するために直接使用できます。便宜的な場合を除いて、通常は install_opener を呼び出す必要はありません。
上記の 2 つの内容について説明した後、ここで使用する上記の Opener と Handler の基本認証の内容を見てみましょう。
Basic 認証
ハンドラーの作成とインストールを示すために、HTTPBasicAuthHandler を使用します。
基本的な検証が必要な場合、サーバーは検証を要求するヘッダー (401 エラー コード) を送信します。これはスキームと「レルム」を指定し、次のようになります: Www-authenticate: SCHEME realm="REALM".
たとえば
Www-authenticate: Basic realm="cPanel Users"
クライアントは新しいレルムを使用する必要があります。リクエストを作成し、リクエスト ヘッダーに正しい名前とパスワードを含めます。
これは「基本認証」です。このプロセスを簡素化するために、HTTPBasicAuthHandler のインスタンスを作成し、オープナーにこのハンドラーを使用させることができます。
HTTPBasicAuthHandler は、パスワード管理オブジェクトを使用して URL とレルムを処理し、ユーザー名とパスワードをマップします。
(サーバーから送信されたヘッダー内の) レルムがわかっている場合は、HTTPPasswordMgr を使用できます。
通常、人々はレルムが何であるかを気にしません。その場合は、便利な HTTPPasswordMgrWithDefaultRealm を使用できます。
これにより、URL のデフォルトのユーザー名とパスワードが指定されます。
これは、特定のレルムに他の組み合わせを指定した場合に提供されます。
add_password に提供される realm パラメーターに None を指定することで、この状況を示します。
最上位の URL は、検証が必要な最初の URL です。 .add_password() に渡すより深い URL も同様に適しています。
くだらない話をたくさんした後、上で述べたことを例を使って説明しましょう。
情報アプリケーションをテストするために urllib2_test12.py を構築しましょう:
# -*- coding: utf-8 -*- import urllib2 # 创建一个密码管理者 password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() # 添加用户名和密码 top_level_url = "http://example.com/foo/" # 如果知道 realm, 我们可以使用他代替 ``None``. # password_mgr.add_password(None, top_level_url, username, password) password_mgr.add_password(None, top_level_url,'why', '1223') # 创建了一个新的handler handler = urllib2.HTTPBasicAuthHandler(password_mgr) # 创建 "opener" (OpenerDirector 实例) opener = urllib2.build_opener(handler) a_url = 'http://www.baidu.com/' # 使用 opener 获取一个URL opener.open(a_url) # 安装 opener. # 现在所有调用 urllib2.urlopen 将用我们的 opener. urllib2.install_opener(opener)
注: 上記の例では、HHTTPasicAuthHandler を build_opener にのみ提供しています。
デフォルトのオープナーには通常のハンドラーがあります: ProxyHandler、UnknownHandler、HTTPHandler、HTTPDefaultErrorHandler、HTTPRedirectHandler、FTPHandler、FileHandler、HTTPErrorProcessor。
コード内の top_level_url は、実際には完全な URL (「http:」、ホスト名、オプションのポート番号を含む) にすることができます。
例: http://example.com/。
「権限」(つまり、ホスト名とオプションでポート番号) にすることもできます。
例: 「example.com」または「example.com:8080」。
後者にはポート番号が含まれます。
上記は、[Python] Web クローラー (4): オープナーとハンドラーの紹介とアプリケーション例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

Pythonlistscanstoreanydatatype,arraymodulearraysstoreonetype,andNumPyarraysarefornumericalcomputations.1)Listsareversatilebutlessmemory-efficient.2)Arraymodulearraysarememory-efficientforhomogeneousdata.3)NumPyarraysareoptimizedforperformanceinscient

heouttemptemptostoreavure ofthewrongdatatypeinapythonarray、yure counteractypeerror.thisduetothearraymodule'sstricttypeeencultionyを使用します

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

theScriptisrunningwithwrongthonversionduetorectRectDefaultEntertersettings.tofixthis:1)CheckthedededefaultHaulthonsionsingpython - versionorpython3-- version.2)usevirtualenvironmentsbycreatingonewiththon3.9-mvenvmyenv、andverixe

PythonArraysSupportVariousoperations:1)SlicingExtractsSubsets、2)Appending/ExtendingAdddesements、3)inSertingSelementSatspecificpositions、4)remvingingDeletesements、5)sorting/verversingsorder、and6)listenionsionsionsionsionscreatenewlistsebasedexistin

numpyarraysAressertialentionsionceivationsefirication-efficientnumericalcomputations andDatamanipulation.theyarecrucialindatascience、mashineelearning、物理学、エンジニアリング、および促進可能性への適用性、scaledatiencyを効率的に、forexample、infinancialanalyyy

UseanArray.ArrayOverAlistinPythonは、Performance-criticalCode.1)homogeneousdata:araysavememorywithpedelements.2)Performance-criticalcode:Araysofterbetterbetterfornumerumerumericaleperations.3)interf

いいえ、notallistoperationSaresuptedbyarrays、andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorintorintorinsertizizing、whosimpactsporformance.2)リスト


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ホットトピック









