Pythonにできることは自動化しよう!【第9回 webスクレイピング(実践編1)】

こんにちは、unogram管理人のうのちゅ〜です。

【Pythonにできることは自動化しよう!】シリーズとして、Pythonの基礎から順を追って学習し、作業の自動化・効率化を実現する能力を身に着けていきます。Pythonの基礎について学ぶだけで、大規模なコードを書かなくても十分に役に立つプログラムを記述することができるようになります。Pythonは気になるけど、プログラミングには苦手意識がある方も安心してトライしてみてください!

本シリーズでは、以下のようなことができるようになります。

  • ファイルの読み書き・管理
  • Webサイトからファイルをダウンロード
  • エクセルシート操作
  • PDF・ワード文書操作・テキスト抽出
  • 電子メール・SMS送信

うまく活用すれば作業に役立ちそうなワードがたくさん並んでいますね!

なお、本シリーズでは一部以下の書籍を参考にしています。「退屈なことをPythonにやらせる」ようになるためにはうってつけの書籍なので、ぜひ参考にしてみてください。

それでは見ていきましょう!



Webスクレイピングを実践してみよう(その1)

今回はWebスクレイピングの実践編として、【第8回 webスクレイピング(導入)】で学習したモジュールについて、実際にコードを使って学習してみましょう。

webbrowserモジュール

webbrowserモジュールではブラウザを起動してwebページを開きます。

open()関数を使用し、引数には開きたいページのURLを指定します。試しにGoogleのページを開いてみましょう。

import webbrowser
url = 'https://www.google.co.jp/'
webbrowser.open(url)

参考書の自動化例

本シリーズで参考にしている「退屈なことはPythonにやらせよう」では、webbrowserモジュールを次のような自動化プログラムに応用しています。

  • クリップボードにコピーした住所をもとに、スクリプトを実行するだけでその住所のGoogleマップページを開く

requestsモジュール

requestsモジュールを活用すると、webからファイルをダウンロードすることができます。

ここでは、requestsモジュールを使ってweb上のファイルにアクセスし、
get()関数の引数にダウンロードするファイルのURL(文字列)を渡すとResponseオブジェクトを返します。

import requests

url = 'https://www.google.com/'
print(response.status_code == requests.codes.ok)
# True
print(len(response.text))
# 14071
print(response.text[:50])
# '<!doctype html><html itemscope="" itemtype="http:/'

ここでは、Googleのホームページにアクセスしています。試しにResponseオブジェクトのstatus_code属性やtext属性をprintしています。status_code==requests.codes.okとなっているので、webページへのリクエストが成功したことがわかります。また、text属性では、アクセスしたwebページのテキストを取得できます。Googleのホームページからは、HTMLのコードが取得できます。試しにChromeのデベロッパーツールからHTMLを見てみましょう。

このように、Responseオブジェクトが正しくtextを取得していることがわかります。

開発者ツールの開き方・使い方

ちなみに、Chromeのデベロッパーツールのようなブラウザの開発者ツールは、HTMLを解析する上で有用です。Chromeのデベロッパーツールは以下の手順で開きます。

  1. Chrome右上の3点リーダーからメニューを開きます。
  2. 「その他のツール」を開きます。
  3. 「デベロッパーツール」を開きます。

これで上のような画面が開きます。HTMLに触れたことのない方にとっては意味不明かもしれませんが、よく見てみるとGoogleのホーム画面で見かけるような文字列やURLが含まれていることが分かるのではないでしょうか。

HTMLが見られるだけでなく、様々な機能が備わっています。例えば、左上のマウスポインタのような部分をクリックしてからページ上でマウスを動かすと、その位置の構成要素を記述する部分がHTML上でハイライトされます。この機能を活用すると、後に紹介するBeautiful SoupやSeleniumを使ったスクレイピングの際に、どのタグについて操作すればよいのか、どのクラス名について操作すれば良いのかなどを把握しやすくなり、非常に便利です。

参考書の自動化例

本シリーズで参考にしている「退屈なことはPythonにやらせよう」では、requestsモジュールを次のような自動化プログラムに応用しています。

  • requestsモジュールで取得したtextをファイルに書き込んでローカルのハードディスクに保存する。



まとめ

今回は、【Pythonにできることは自動化しよう!】シリーズ第9回として、Webスクレイピングのコード例と参考書ではどのような応用例が示されているのかを紹介しました。

次回はBeautiful SoupやSeleniumを使ったwebスクレイピングについて紹介していきます。

さらに追加で詳しく学びたいという方は、下記の参考書などを使った学習にも挑戦してみてください。

おすすめ参考書

冒頭でも紹介しましたが、Pythonによる自動化に向けた学習は、本シリーズでも参考にしている次の書籍がおすすめです。「退屈なことをPythonにやらせる」ようになるためにはうってつけの書籍なので、ぜひ参考にしてみてください。