Pythonは特にAI(人工知能)分野で注目されているが、他にも様々な種類のプログラムを書くことができる。例えば、Webサーバーなどのネットワークソフトも書ける。

 TCP/IPで通信するネットワークソフトをPythonで作る場合は、基本的にはsocketモジュールを使う。ただ、HTTP通信を行うソフトの場合は、より手軽に開発できるhttp.serverやurllibといったモジュールが用意されている。

ネットワークソフトの開発に使うモジュール
[画像のクリックで拡大表示]

 ここでは、urllibモジュールを使って特定のWebページを取得し、そのWebページから情報を抽出する「Webスクレーピング」に挑戦してみよう。スクレーピングは「削り落とす」という意味だ。Webページから不要な部分を削り落として、欲しい情報を抽出する処理を指す。

 具体的には、日経 xTECHのトップページ(https://tech.nikkeibp.co.jp/)のデータを取得し、そのデータに対して処理を行った。

Webスクレーピングを実施した日経 xTECHのトップページ
[画像のクリックで拡大表示]

 まず、urllibでどのようにWebページのデータを取得するかを説明する。最初にimport文でurllibのrequestモジュールをインポートする。指定したURLからurlopen関数で、リクエストの結果であるレスポンスを取得している。

urllibでWebページのデータを取得
[画像のクリックで拡大表示]

 その際にはwith文を使うのがポイントだ。Pythonでネットワークのレスポンスやファイルといったリソースを扱う場合、with文を使うのが一般的だ。with文を使わずにリソースを取得した場合、close関数で明示的にクローズする必要がある。with文を使えば、適切なクローズ処理を自動的に行ってくれる。

 最後の行のprint関数で、取得したWebページの内容(HTML)を表示している。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら