Pythonでgrabを用いてGET リクエストを作成し情報を取得してみます。
今回はgrabを用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。
■Python
今回のPythonのバージョンは、「3.6.8」を使用しています。(Windows10)(pythonランチャーでの確認)
■grabを用いてGET リクエストを作成し情報を取得する
では、早速grabを用いてGET リクエストを作成し情報を取得するスクリプトを書いていきます。
■コード
from grab import Grab g = Grab(transport='urllib3') resp = g.go('https://www.yahoo.co.jp/') print(resp.unicode_body())
今回は「from import」でgrabモジュールのGrabを呼び出します。その後、「g = Grab()」でGrabインスタンスを作成します。作成しますが、括弧内に引数,パラメータとして、「transport=’urllib3’」を渡します。これでurllib3というネットワーク ライブラリを用いてネットワーク リクエストを実行し、ネットワーク レスポンスを取得することができます。なお、現在、Grabはurllib3のネットワーク ライブラリのみをサポートしていますので、引数,パラメータとしてこのライブラリを渡さないと、下記のエラーが発生します。
Traceback (most recent call last): File "C:\Users\user_\AppData\Roaming\Python\Python36\site-packages\grab\base.py", line 267, in setup_transport cls = TRANSPORT_CACHE[(mod_path, cls_name)] KeyError: ('grab.transport.curl', 'CurlTransport') During handling of the above exception, another exception occurred: Traceback (most recent call last): File "grab_get.py", line 4, in resp = g.go('https://www.yahoo.co.jp/') File "C:\Users\user_\AppData\Roaming\Python\Python36\site-packages\grab\base.py", line 382, in go return self.request(url=url, **kwargs) File "C:\Users\user_\AppData\Roaming\Python\Python36\site-packages\grab\base.py", line 454, in request self.prepare_request(**kwargs) File "C:\Users\user_\AppData\Roaming\Python\Python36\site-packages\grab\base.py", line 402, in prepare_request self.setup_transport(self.transport_param) File "C:\Users\user_\AppData\Roaming\Python\Python36\site-packages\grab\base.py", line 269, in setup_transport mod = __import__(mod_path, globals(), locals(), ['foo']) File "C:\Users\user_\AppData\Roaming\Python\Python36\site-packages\grab\transport\curl.py", line 22, in import pycurl ModuleNotFoundError: No module named 'pycurl'
括弧内に引数,パラメータを渡したあと、respという変数を定義し、g.go()を用います。括弧内には、情報を取得するURLを渡します。今回は「Yahoo!Japan(https://www.yahoo.co.jp/)」を指定しています。これでWebサーバから取り出された情報がresp変数に格納されます。
その後、応答コンテンツ(resp変数)をUnicodeとして取得するために、resp.unicode_body()を用います。これで文字セットを自動的に検出し、それをUnicodeに変換します。変換後、変換された応答コンテンツをprint()で出力します。
■実行・検証
このスクリプトを「grab_get.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、grabを用いてGET リクエストを作成し指定したURLから情報を取得し、取得した情報を出力させることができました。
コメント