「Webサイトから、必要な情報だけ欲しい。」
「情報収集するのが面倒・・・。もっと楽できないかなぁ。」
日頃の情報収集にどのくらい時間をかけてますか?
これから紹介するWebスクレイピングという技術を使えば、必要なデータを効率よく集めることができます。
今回は競馬を題材に解説します。
「プログラミングが分からないのにできるの?」と思われるかもしれません。
しかし、大丈夫です。プログラミング未経験者でも、ポイントを押さえればできるようになります。
私もプログラミング未経験からWebスクレイピングを勉強して、今では趣味の競馬予想をほぼ自動化することができるようになりました。
「偉そうに語るおまえは誰やねん。」と思われるので、私のことも少し紹介させてください。
たいらーのプロフィール
- 文系四大出身。ソフトウェア開発の経験はなしですが、IT業界に身を置いています。
- 開発者やユーザーとのパイプ役など、業務にプログラミングスキルを活かす。
- Pythonは独学で習得。スクレイピングや作業の自動化などに勤しんでいます。
この記事では、どなたでもWebスクレイピングが体験できるように、次の流れに沿って解説します。
- そもそもWebスクレイピングとは?
- Webスクレイピングに必要な準備
- Pythonの事前知識
- 実際にWebスクレイピングをやってみる
独学で苦労した分、初心者が躓きやすいポイントは心得ているつもりです。
なので、初心者の方でも理解できるように、Webスクレイピングのポイントを分かりやすく解説しています。
手軽にWebスクレイピングが体験できると思いますので、是非、読みながら手を動かして見てください。
1.そもそもWebスクレイピングとは?
Webスクレイピングとは、Webサイト上の情報を抽出・整形・解析する技術のことです。
うまく使うことができれば、手動でデータ収集するよりも、手間や時間を削減することができます。
・Webスクレイピングでできること
Webスクレイピングは、データを活用するシーンで活躍します。
たとえば、株価の変動やショッピングサイトなどの価格調査など、モニタリングやマーケティングで活用されています。
他にも、研究開発やビジネスなど、様々な分野で活用されています。
データの有効活用が叫ばれて久しいですが、Webスクレイピングの技術を使って、あなた自身が新たなサービスをつくりだすことも可能です。
・心構え
ただ、非常に便利な技術ですが、使うには注意が必要です。
ここでは注意点について、少し触れておきます。
・Webスクレイピング禁止のWebサイトでしてはいけない
Webサイトの利用規約などに「スクレイピング禁止」とあれば大人しくやめましょう。
取得した情報の取り扱いについて言及しているWebサイトもあるので、規約などは必ず確認するようにしてください。
違反した場合、法的に訴えられる可能性があります。
・サーバーに負荷がかかると心得る
Webスクレイピングは、サーバーにアクセスするため、アクセス頻度が多いほどサーバーに負荷をかけることになります。
他の利用者がアクセスできないなど、システム障害を引き起こす可能性があるので、連続して頻繁にアクセスすることはやめ、節度を保ちましょう。
なお、Webスクレイピングの練習用に『 出馬表サンプル』を用意したので、本サイトでWebスクレイピングをする場合は、こちらをお使い下さい。
2.Webスクレイピングに必要な準備
Webスクレイピングの事前知識は理解して頂けたと思うので、準備を進めます。
Webスクリレイピングの方法はいくつかありますが、今回はPythonというプログラミング言語を使用します。
Pythonは、他の言語と比較してシンプルで読みやすく理解しやすい文法のため、プログラミング初心者にとっても学びやすいプログラミング言語なので、おすすめです。
・Pythonのダウンロードとインストール
Pythonを使用するためには、環境を整える必要があります。
『Python3のインストール方法【10分で完了!】』を参考にしつつ、ご自身のパソコンにダウンロード&インストールしましょう。
「パソコンにインストールするのはちょっと…」という方は、『【Python】ブラウザからオンラインでプログラミングする方法』を参考に準備してみてください。
・ライブラリのインストール
Webスクレイピングに必要なライブラリをインストールします。
ライブラリの説明はここでは割愛しますが、現時点ではとりあえず「いろいろな機能をひとまとめにしたもの」と理解してもらって問題ありません。
今回は以下の2つを使用します。
ライブラリ | 概要 |
---|---|
Requests | HTTP 通信ライブラリ |
BeautifulSoup | HTMLやXMLからデータを引き出すことができるライブラリ |
まず、Requestsをインストールします。
Windowsキー+Rを押下し、「cmd」と入力し、コマンドプロンプトを起動します。
ちなみにコマンドプロンプトとは、「コマンド」と呼ばれる命令文を入力して、コンピュータを操作したり、プログラムを実行するWindowsのシステムツールです。
この後もコマンドプロンプトは何度か使用するので、起動方法を覚えておきましょう。
以下のコマンドを入力しEnterキーを押下します。
「Successfully installed ~」と表示されれば成功です。
py –m pip install requests
次にBeautifulSoupをインストールします。
同様に以下のコマンドを入力しEnterキーを押下します。
こちらも「Successfully installed ~」と表示されれば成功です。
py –m pip install BeautifulSoup4
これで環境の準備が完了しました。
3.Pythonの事前知識
Webスクレイピングをする前に、ちょっとPythonについて説明です。
Pythonの基礎知識だけでも、それなりにボリュームがあるのですが、スクレイピングを体験してもらうことが目的なので、必要最低限の知識に絞って解説しています。
Webスクレイピングするときに、事前に知っておいてほしい知識なので是非とも押さえておいてください。
・import文
import文とは、モジュールやパッケージ、ライブラリを自作のプログラムに組み込むための作法です。
今回のWebスクレイピングでは、先ほどインストールしたRequestsを読み出すのに使用します。
実際は以下のように表記することで、Requestsの機能を使うことができます。
import requests
ライブラリ/モジュール/パッケージについては、とりあえず機能がひとつにまとまったものと理解してもらえればOKです。
・変数
Pythonに限らず、プログラム理解するうえで避けて通れないのが変数です。
一般的に変数は、値や文字列を格納しておく箱に例えられます。プログラムを実行する過程で、データを収納したり取り出すために使用します。
Pythonにおける変数も同様で、値を保管するための名前のついた箱と認識してください。
例えば以下のように100を代入し、変数を呼び出すと実行結果として100が返ってきます。
atai = 100 atai #実行結果 100
プログラムは組んでいくと複雑になりがちなので、どのような種類のデータが、どこに格納されているか判別できるように、変数を使ってラベリングします。なので変数を使うと管理がしやすいという特徴もあります。
Pythonでは、変数の命名にいくつか決まりがあるので、一緒に覚えておきましょう。
- 先頭に数字は使用できない。
- 大文字と小文字は区別される。
- 英数字と_が使用できる。
・コメント
自分が書いたプログラムにメモや説明を残したいときは、コメントを使いましょう。
コメントの書き方は、メモや説明文の先頭にひとつだけ半角の#を付けます。#を付けた部分から行末までは、コメントと認識されます。
プログラムは、書かれた内容が正しければ、こちらの意図した結果を示しますが、プログラムに間違いがあると、エラーが発生したり、意図しない結果になったりします。
このとき、プログラムの間違いを検証するために、実行したくないソースコード前に#をつけることで、処理の対象から外すこともできます。 (このことをコメントアウトといいます。)
このように間違いの原因特定にも、コメントは有用です。
・print文
Webスクレイピングをしていると、取得したデータを目で確認したくなるときがあります。
このときprint文を使用すると、実行結果や取得したデータを表示させることができます。 例えば、次のソースコードではdataという変数に格納された文字列を、print文を使用して表示しています。
data = “Hellow” Print(data) #実行結果 Hellow
ざっとPythonの基本的な知識について説明しました。
もっとPythonの基礎力を上げたい方は、こちらの『【Python用語集】初心者のための用語解説10選』をご覧ください。
4.Webスクレイピングをやってみよう
だいぶ前置きが長くなりましたが、ここから実際に作業をはじめましょう。
手順1.Webページを取得する
まず、Requestsを使ってWebページを取得します。対象は先ほど紹介したURLを使います。
次のソースコードは、Webページを取得し、そのHTTP レスポンスステータスを表示させています。
200が返ってくれば情報の取得は成功です。
import requests url = requests.get('https://umano-ie.com/racesample/') #Webページを取得 print(url.status_code) #HTTP レスポンスステータスを表示 #実行結果 200(リクエスト成功)
手順2.HTMLページから情報を抽出する
次にWebページから情報を抽出します。ここで BeautifulSoupを使用します。
取得したい情報が、HTMLページでどのようになっているのか調べておきましょう。
WebスクレイピングはHTMLの要素を指定して行うことになります。
HTMLの要素の一例
リンク | <A> |
タイトル | <TITLE> |
見出し | <h1>~ <h6> |
調べ方はブラウザによって異なりますが、chromeならディベロッパーツール、Edgeなら開発者ツールを使用して確認することができます。
BeautifulSoupはURLを取得できないので、Requestsと組み合わせてWebスクレイピングをします。
以下はサンプルのソースコードですが、ここではRequestsでURLをを取得し、BeautifulSoup でHTML要素のタイトルを取得し、print文で表示させています。
6行目の”html.parser”は、htmlを元にパーサ(parser = 構文解析)するという意味です。
問題なく実行されれば、実行結果に記事のタイトルが表示されます。
import requests from bs4 import BeautifulSoup url = requests.get('https://umano-ie.com/racesample/') #Webページを取得 soup = BeautifulSoup(url.text, "html.parser") #htmlを元に解析 print(soup.find_all("title")) #記事のタイトルを抽出 #実行結果 <title>出馬表サンプル | うまのいえ</title>
5.まとめ
以上、PythonによるWebスクレイピング入門でした。
サクッとWebスクレイピングを体験いただけたのではないでしょうか。
今回は競馬を題材にしましたが、Webスクレイピングは、いろいろなシーンで活用できる技術です。
今回は簡素なWebスクレイピングの解説でしたので、実際は個人のやりたいことに合わせてカスタマイズが必要だと思います。
これを機にWebスクレイピングを身につけたいという方は、『スクレイピングのやり方&学習方法教えます【プログラミング未経験からできる】』をご覧ください。
基本的なWebスクレイピングのやり方&学習方法を解説しています。
「Webサイトや書籍で勉強するのは苦手だなぁ。」という方は、動画でWebスクレイピングが学べるUdemyがおすすめです。
スクレイピングやPythonの動画教材が充実しているので、あなたに合った講座が見つかります。
初めて利用される方は、割引適応されることがあるので一度覗いてみてください。
ご清聴ありがとうございました。