注目キーワード

【Python】urllibを使ってインターネット上のページにアクセスする

Pythonには様々な種類のファイルを扱うライブラリが揃っており、様々なデータをプログラムで扱うことができます。

urllibはインターネット上のファイルへのアクセス(GET、POST)やダウンロードを扱うことができるライブラリであり、例えばコロナ検査数のファイルを直接プログラムからアクセスしてダウンロードするなど、より柔軟なプログラムを書くことができます。こちらの記事では基本的な使い方を確認してみましょう。

urllibの基本的な利用方法

pandasの例で利用した厚生労働省のオープンデータ を参考にして、pythonのプログラムからデータを取得してみます。

サンプルソース

サンプルの実装です。

1行目では、urllib.requestというURLへアクセスして読み込みを行うためのモジュールをインポートしています。

2行目は、これまでブラウザでダウンロードしていた厚生労働省のオープンデータのURLです。

3行目ではURLへアクセスし、4行目では読み込んだページへアクセスした内容を読み込みます。read()ではバイトデータを返すため、pythonの文字列として変換します。5行目では、アクセスを終了します(ファイルの読み込みを終了するcloseと同じです)。最後に読み込んだファイルを出力しています。

実行結果

実行結果です。以前pandasの例で利用した検査実施人数のCSVファイルが出力されました。このようにurllibを利用することで、Pythonのプログラムからインターネット上のリソースに簡単にアクセスすることができます。

インターネット上のファイルにアクセスして読み込んだデータの出力例

urllibでアクセスする際の例外処理

普段ブラウザでページにアクセスするとき、アクセス先が見つからないときに404 Not Foundと表示されることがあると思います。urllibを使った場合でも、アクセス先が見つからない場合など、Pythonの例外処理と一緒に使うと安全です。

urllibで例外処理を行うサンプルソース

サンプルの実装です。

2行目では例外関係のモジュールである urllib.error から、HTTPアクセス関係のエラーを扱うために HTTPError をインポートします。元のファイルアクセス処理は先程のサンプルソースと同じですが、ここでは存在しないURL(XXX.csv)へアクセスします。

実行結果

Pythonのtry-exceptを利用してアクセスしてみると、次のような実行結果が得られました。無事に例外処理を付け、存在しないURLへのアクセスに対処できることができました。

例外処理の実行例

例外を付ける以外には、ファイル読み込みで利用する with ブロックを利用する方法があります。

スポンサーリンク

urllibでファイルをダウンロードする

これまでの例ではファイルへアクセスしてメモリ上に読み込みしていましたが、直接ダウンロードも可能です。ダウンロードするにはurlretrieveを利用します。

プログラムを実行すると、カレントディレクトリにdownload.csvが保存されていることが分かります。

urllibを利用する場合は特に自分のPCの外部へアクセスすることになるため、データの処理や例外・アクセスし過ぎには注意して利用していきましょう。