こんにちは、Python 3 チュートリアルの記事へようこそ。
今回は、標準のライブラリモジュールの一部であるPythonのurllibライブラリについて説明します。
Python urllibのアイデアは、簡単なプログラミングでインターネットが可能にするあらゆる種類の素晴らしいことをできるようにするということです。
それでは、さっそく始めてみましょう。
Python の urllib をインポートする
最初にやらなければならないことは、URLlib をインポートすることです。
Python 2.7から来た人は、単にurllibをインポートすることに慣れたと思います。
import urllib
|
一方、Python 3 以降では、urllib から request パッケージをインポートする必要があります。
import urllib.request
|
Python urllib モジュールを使ってウェブサイトにアクセスする
つまり、Webサイトにアクセスする例は以下のようになります。
1. GET ウェブサイトにアクセスするためのリクエスト
x = urllib.request.urlopen('https://www.google.com') |
変数xを定義してurlopenメソッドを呼び出し、Webサイトのurlを指定することにします。
これで、URLからデータを取得するためのHTTP GETリクエストとなります。
データを取得するためにread()を使用します。
print(x.read()) |
上記のコードでは、google.comというページのソースコードを返しています。
これは、htmlタグやスタイリング属性など、ページのすべての内容をpythonコンソール上に返します。
しかし、ユーザーとしては、ページのソースコードを取得することに興味がなく、テキストデータのみを必要とする場合があります。
https://www.python.org/search/?q=urllib&submit= |
通常のユーザーであれば、python.org
などのウェブサイトの検索バーにアクセスし、検索したい内容を指定して送信ボタンをクリックします。
このとき、アドレスバーのURLが以下のように変化していることに気がつきます。
このURLには、クエリパラメータである「?」と「&」がいくつか含まれています。
import urllib.request as rq
import urllib.parse as ps
|
と「&」は、検索バーで入力した検索クエリであり、これがURLに書き込まれます。
このURLにPOSTリクエストを送ると、コンテンツを取得することができます。
2. Web サイトにアクセスするための POST リクエスト
リクエストモジュールとは別に、リクエストの値を解析するのに役立つparseモジュールもインポートします。
url = 'https://www.python.org/search/'
dictionary = { 'q' : 'urllib' }
data = ps.urlencode(dictionary)
data = data.encode( 'utf-8' )
req = rq.Request(url,data)
res = rq.urlopen(req)
print (res.read())
|
POST リクエストをよりよく理解するために、python.org のウェブサイトを使用することにします。
辞書を定義し、キーは「検索パラメータ」、値は「キーワード」とします。
urlパラメータを指定した後、ワールドワイドウェブがutf-8の標準的なエンコーディングを使用していることを理解することが重要です。
したがって、我々は、エンコードされたコンテンツに私たちのURLを変換します。
次に、URLとエンコードされたデータをreqオブジェクトに渡し、これに対してurlopenリクエストを発行します。
urlopenのレスポンスはresオブジェクトに格納されます。
これは、今回掲載したウェブサイトが、APIを使用せずにコンテンツにアクセスすることを許可していないためです。
RESTFUL APIや他の特定のHeaderを使用してデータを取得することができます。
この記事では、これについては説明しません。
それでも、すべての HTML タグを含むウェブページ全体を Python コンソールに取り込むことができます。
まとめ
Python を使ってブラウザやサイトに HTTP GET と HTTP POST リクエストを発行する方法を理解していただけたでしょうか?コメント欄でご意見をお聞かせください。
また、他に読みたいトピックがあればご記入ください。