Pythonでスクレイピングをする最初の一歩、Webページを丸ごと取得する方法

★気に入ったらシェアをお願いします!


scraper

photo credit: The Life of Bryan IMG_3780.jpg via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Windowsユーザーかつプログラミング初心者向けに、便利ツールを作りながらPythonを勉強していくという趣旨で記事を書いております。

さて、Pythonは本当にいろいろな方面で活躍するポテンシャルがあるプログラミング言語なのですが、書店など行くとよく「Webスクレイピング」というキーワードが目に入ると思います。

スクレイピングとはすなわち、Webサイトから情報を集めてくる技術のことです。

決まりきっているものであれば、わざわざ人の手で情報を集めてこなくても、プログラムに任せちゃえばラクチンできますもんね。

そして、Pythonはスクレイピングが得意というわけです。

ということで、今回からWebスクレイピングをテーマに便利ツールを作るという内容で連載をしていきたいと思います。

初回の今回は、Pythonでスクレイピングをする最初の一歩、Webページを丸ごと取得する方法です。

では、行ってみましょう!

requestsモジュールをインストールする

まず、Webページを取得する際には、requestsというモジュールを使うと簡単にできます。

これは、標準のPythonに含まれていませんので、個別にインストールする必要があります。

ということで、コマンドプロンプトで以下pipコマンドを使ってインストールをします。

コマンドプロンプトでpip install requests

Successfully installed ~ requests-2.18.4 ~

まあ、他にもいろいろインストールされてしますが、requestsモジュールのインストールも無事に完了しているようです。

pipについて詳しい解説は以下の記事をご参考ください。

初心者向けPythonでパッケージ管理をしてくれるツールpipのはじめての使い方
非エンジニアでWindowsユーザー向けにPythonを学んでいく方法をお伝えしています。今回はPythonのパッケージ管理をするツールpipの初心者向けの最初の使い方についてお伝えします。

PythonでWebページを取得する

では、これで準備はバッチリですので、PythonでWebページを取得してみましょう。

requestsモジュールのインポート

まず、先ほどインストールしたrequestsモジュールを使いますので、スクリプトの冒頭でインポートをする必要があります。

import requests

これでOKです。

get関数でGETリクエスト

さて、Webページを取得するというのは、厳密に言うと

  1. 取得したいWebページが置いてあるサーバーに「Webページの情報をちょうだいな」とリクエストをする
  2. サーバーからのレスポンスを受け取る

という作業になります。

その際のリクエストの種類をHTTPメソッドと言いまして、「GET」とか「POST」とか、いくつかの種類があります。

基本的にWebページのデータが欲しいときはGETを使います。

PythonでGETリクエストをするのが、requests.get関数ということになります。

書き方はこうです。

requests.get(URL)

前置き説明が長かったですが、簡単ですね。

ResponseオブジェクトからWebページの情報を取り出す

requests.get関数の戻り値として、Responseオブジェクトというものが取得できます。

Responseオブジェクトは、以下のような属性を持っていて、つまりサーバーからのレスポンスを表すオブジェクトです。

  • text属性:WebページのHTMLデータ
  • status_code属性:レスポンスのステータスコード

WebページというのはHTMLというテキストデータで作られていまして、Responseオブジェクトのtext属性として格納されています。

これを取り出せばよいということになりますが、こう書きます。

Responseオブジェクト.text

Webページを取得するスクリプト

以上を踏まえて、スクリプトを用意しました。

実行しますと以下のように超大量にHTMLテキストが出力されます。

PythonでWebページのHTMLをprint

一応、WebページのHTMLデータが取得できていることは確認できましたね。

htmlファイルとして保存してみる

ただ、ワーって表示しただけなので、これじゃ使いようがありませんね。

ということで、htmlファイルとして保存をしてみます。

htmlファイルと言っても、拡張子がhtmlなだけのテキストファイルですので、以下の記事に書いてあるような内容が使えます。

Pythonでテキストファイルに追加で書き込みをする基本中の基本
非エンジニアの初心者向けにPythonでクリップボードを操作する便利ツールの作り方をお伝えしています。今回はPythonでテキストファイルに追加で書き込みをする基本中の基本の方法をお伝えします。

これを元に作ったのが、こちらのスクリプト。

実行すると、「tonari-it.html」というファイルがPythonのファイルと同じフォルダに保存されます。中身を確認してみましょう。

Pythonで取得したhtmlファイル

大丈夫そうです。

まとめ

以上、PythonでWebスクレイピングをする第一歩、Webページをまるごと取得する方法についてお伝えしました。

  • requestsモジュールのインストールとインポート
  • get関数の使い方
  • Responseオブジェクトとtext属性の取得

結果、たったの3行のスクリプトで取得できちゃうという…簡単ですね。

次回は、Webページの取得がうまくいかなかった場合にどうするか?ということについてお伝えします。

PythonでWebページを取得できたかどうかのエラーチェックと安全な中止の仕方
プログラミング初心者&Windowsユーザー向けにPythonでWebスクレイピングをする方法についてお伝えしています。PythonでHTTPリクエストする際のエラーのチェックと安全な中止の仕方についてです。

なお、requestsモジュールのpost関数の使用例として、以下記事もありますので、合わせてご覧ください。

Pythonでチャットワークにメッセージを送る方法
PythonからチャットワークのAPIを利用して、チャットワークにメッセージを送る方法を解説します。PythonのRequestsというモジュールを使用します。

では、次回をお楽しみに!

連載目次:初心者向け!PythonでWebスクレイピングをしよう

スクレイピングとはWebサイトから情報を集めてくること。Pythonは専用の書籍が出るくらいスクレイピングが得意です。本シリーズでは、PythonでWebスクレイピングをする方法をお伝えしていきます。

  1. Pythonでスクレイピングをする最初の一歩、Webページを丸ごと取得する方法
  2. PythonでWebページを取得できたかどうかのエラーチェックと安全な中止の仕方
  3. Pythonで取得したWebページのHTMLを解析するはじめの一歩
  4. PythonでWebページ内の特定のタグ要素をまとめて取得する
  5. PythonでWebページから特定のclass属性を持つ要素をまとめて取得する方法
  6. PythonでWebページからid属性を条件にして要素を取得する方法
  7. PythonでWebページのHTML要素からテキストやリンクURLを取得する方法