urllibはパイソンライブラリーは、最も基本的なネットワーク要求ライブラリでは、ブラウザの動作をシミュレートすることができ、指定されたサーバにリクエストを送信し、サーバによって返されたデータを保存することができます。
urlopen():
urllib.requestモジュールは、メソッドのHTTP要求の基本的な構成を提供します。これは、プロセスを開始するブラウザ要求の使用をシミュレートすることができますが、それはまた、許可の確認(認証)、リダイレクト(リダイレクト)、ブラウザのクッキーやその他のコンテンツを扱います。
ここでは例えばPythonの公式サイトでは、我々はこのページを把握するために降りてきます
urllibはインポート要求 応答 = request.urlopen(' https://www.python.org ' ) プリント(response.read())
結果は以下のとおりであります
ここでは、コードの2つだけのラインを持って、我々は、クロールのPythonの公式サイト、ページのソースコードの出力を完了します。ソースコードを取得した後?私たちは、あなたがテキスト情報がまだ出ていない抽出することができ、画像のアドレスをリンクしたいですか?
次に、それは終わりそうに返すものを見てください。型出力応答のタイプ()メソッドを使用して:
urllibはインポート要求 応答 = request.urlopen(' https://www.python.org ' ) プリント(型(応答))
次のように出力結果は以下のとおりです。
< クラス ' http.client.HTTPResponse ' >
見つけることができ、それは、主に読み取りを()を含む、readinto()、のgetheader(名)、getheaders()、filenoに()など、およびMSG、バージョン、ステータス、理由、デバッグレベルのオブジェクトはHttpResponseタイプで、属性をcolsed 。
このオブジェクトを取得した後、我々はあなたが返される情報のシリーズの結果を得るために、これらのメソッドとプロパティを呼び出すことができ、応答変数として割り当てます。
例えば、()メソッドは、ページコンテンツを得ることができる戻り、200は、要求が成功した表すような呼状態属性は、結果のステータス・コードを戻すことができる読み取る呼び出し、ページ404は等を表す検出されません。
urlopen基本()メソッドを使用して、Webページを取得するための簡単な基本的なGETリクエストを完了することができます。
あなたには、いくつかのパラメータを渡すためにリンクしたい場合、どのようにそれを達成するには?urlopen()API関数を初めて目:
urllib.request.urlopen(URL、データ=なし、[タイムアウト、] *、cafile =なし、capath =なし、cadefault = Falseを、コンテキスト=なし)
最初のパラメータに加えて、URLを渡すことができ、見つけることができ、我々はまた、このようなデータ(追加データ)、タイムアウト(時間切れ)など、他のコンテンツを渡すことができます。
これらのパラメータの我々の詳細の下に使用。
-
データパラメータ
データパラメータはオプションです。あなたはバイトストリームのコンテンツのエンコード形式、すなわち、バイト型に引数のパラメータに必要なバイト()メソッドを追加したい場合。あなたは、このパラメータを渡す場合また、それはもはやGETを要求するための方法が、POSTメソッドではありません。
ここでは例を見てと:
インポートurllib.parseの
urllib.requestインポート
データ=バイト(urllib.parse.urlencode({ '単語': 'ハロー'})、エンコード= 'UTF8')
応答= urllib.request.urlopen( 'のhttp:// httpbin。 ORG /ポスト」、データ=データ)を
印刷(response.read()。デコード( 'UTF8'))
ここでは、パラメータワード、値のハローを渡します。これは、バイト型にトランスコードする必要があります。バイト転送()メソッドを使用して、バイトストリームは、メソッドの最初のパラメータは、モジュール内のSTR(文字列)を入力し、必要と前記文字列パラメータにurllib.parseでurlencode()辞書の方法を必要とする、第二のパラメータは、本明細書にUTF8として指定された符号化フォーマットを指定します。
リクエストがhttpbin.orgをここのサイトは、それがテストHTTPリクエストを提供することができます。私たちはURLを要求した。この時間は、このリンクは、POSTリクエストをテストするために使用することができ、http://httpbin.org/postであることを出力することができ、我々は通過したデータのパラメータが含まれている要求された情報の一部。
結果は以下の通りであります:
{ " 引数" :{}、 " データ":"" 、 " ファイル" :{}、 " フォーム" :{ " 単語":" こんにちは" }、 " ヘッダ" :{ " 受け入れエンコードを":" 同一性" 、 " コンテンツ長":" 10 " 、 "Content-Typeの":"アプリケーション/ x-www-form-urlencodedで" " ホスト":" httpbin.org " " ユーザエージェント":" パイソン-urllibは/ 3.7 " }、" JSON " :ヌル、 " 起源":" 220.170.50.160 、220.170.50.160 " " URL ":" https://httpbin.org/post " }
私たちは、パラメータは、フォームがデータの送信を投稿する提出される方法をシミュレートしたことを示すフォームフィールドで表示されます渡します。
-
タイムアウトパラメータ
タイムアウトパラメータはタイムアウトを秒単位で設定します。リクエストが設定時間を超えた場合、応答を取得しないことを意味し、それは例外がスローされます。このパラメータが指定されていない場合、それはグローバルなデフォルトの時間が使用されます。これは、HTTP、HTTPS、FTP要求をサポートしています。
インポートurllib.request 応答 = urllib.request.urlopen(' http://httpbin.org/get '、タイムアウト= 0.1 ) 、印刷(response.read())
結果は以下の通りであります:
ここでは、その後、タイムアウト期間が0.1秒プログラムの後、サーバーがまだ応答しない、0.1で設定するため、タイムアウトエラーに、モジュールをurllib.error属するURLError例外を、アウトくぼみました。
-
その他のパラメータ
また、タイムアウトパラメータおよびデータパラメータだけでなく、コンテキストパラメータでは、SSLを設定するためのssl.SSLContextタイプでなければなりません。
また、cafileおよびこれら2つのパラメータは、CA証明書とそのパスを指定しcapath、これはHTTPSリクエストリンクに有用であろう。
要求
我々は、要求を開始しますが、いくつかの簡単なパラメータは、完全な要求を構築するだけでは十分ではない基本を表示するにはurlopen()メソッドを使用します。リクエストはヘッダやその他の情報の追加が必要な場合は、より強力なRequestクラスを使用して構築することができます。
まず、我々は要求の使用を感じるために例を使用します。
インポートurllib.requestの 要求 = urllib.request.Request(' http://python.org ' ) 応答 = urllib.request.urlopen(リクエスト) プリント(response.read()。デコード(' UTF8 '))
見つけることができ、我々はまだ要求を送信するurlopen()メソッドを使用しているが、この方法では、もはやURLが、オブジェクトのRequesetタイプではありません。このデータ構造を構築することによって、我々は独立オブジェクトとして要求することができ、他方でより豊富で柔軟な設定パラメータとすることができます。
次のようにその構成は以下のとおりです。
クラスurllib.request.Request(URL、データ=なし、ヘッダー= {}、origin_req_host =なし、univerifiable = Falseを、方法=なし)
- リクエストURLの最初のパラメーターのURLが、これは必須パラメータで、他のパラメータはオプションです。
- 二番目のパラメータデータを送信する場合は、バイト(バイトストリーム)のタイプを渡す必要があり、それは辞書であれば、()urllib.parseでurlencodeの最初のモジュールのコーディングすることができます。
- 3番目のパラメータは、それが最初の要求辞書である要求を構築する際に、我々は、ヘッダを介して直接パラメータを構成することができ、又は要求インスタンスはadd_header()メソッドを呼び出すことによって添加されます。ブラウザを変更することで、それを隠すために我々はできる、リクエストヘッダ一般的な使い方は、ブラウザを偽装するためのUser-Agentを変更することで、デフォルトのUser-Agentは、Python-urllibはある加えます。
- 4番目のパラメータがorigin_req_host手段または要求元のIPアドレスのホスト名です。
- 5番目のパラメータは、要求が検証不可能検証不可能であることを示し、デフォルトでは、ユーザが要求の結果を受け入れることを選択するための十分な権限を持っていないことを意味し、Falseです。たとえば、私たちはHTMLドキュメントの画像を要求し、私たちは、自動的に画像の権利をつかむためのアクセス許可を持っていない場合、検証不能の値はTrueです。
- 第六のパラメータは、文字列方法、要求を示すために使用される方法です。このような、GET、POSTなどPUTとなど。