• WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCampPro_インタビュー
    未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26

◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

WEBCAMP【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でプログラミングを学びたい方!
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WEBCAMP PRO転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアへ3ヶ月で転職する為のスクールです!

11月11日、18日開催決定!2日間で人工知能(AI)を学習するPythonコースが開講

今回、当社(WebCamp)では、現役フリーランス・エンジニアとしてPythonの最前線で活動している講師をお招きし、2日間でPythonの基本から機械学習の基礎まで学ぶ短期集中型のコースを開講します。
Pythonの基礎プログラミング能力を身につけたい方機械学習やAIに興味はあるが学習できていない方現役Pythonエンジニアからリアルな話を聞きたい方
上記にあてはまる方は、ぜひご参加ください!

はじめに

Webページから特定の情報、要素を取り出したいことはよくあるかと思います。
あるECサイトのある商品の在庫や価格を出店店舗ごとに把握したいとか、ある事象についてかいてある販売本を抽出するなど)
そういう要素抽出のことをWebスクレイピングと呼びます。そういったスクレイピングを行うときにもPythonが良く利用されます。

今回はそのスクレイピングについてご紹介します。

スクレイピングとは

先述の通り、ウェブサイトから情報を抽出すること、またその技術のことをスクレイピングといいます。
ウェブスクレイピングは多くの検索エンジンによって採用されている技術でもあり、おなじみのGoogleやYahooなどでも積極的に利用されています。
一般的にはHTMLフォーマットからデータベースやスプレッドシートにデータを変換して格納する方法が有名かと思います。
ウェブスクレイピングの用途は、オンラインでの価格比較、ウェブサイトの変更検出、研究などさまざまあります。

データ収集(クローリング)との関係

データ収集の必要性がネットでも増しています。その理由としてはやはり機械学習のブームが大きなものになります。
機械学習のデータとしてテキストや画像を用意する場合も大量の情報が必要ですが、それらを手で収集するのには限界があります。
そういった情報を自動的に集める必要が出てくるわけで、そんな場合にクローリングが注目されます。
情報を収集したら、そこから必要な情報を抽出するのがスクレイピングとなります。
意味を混同したり、取り違えたりすることもあるので気を付けましょう。

クローリングと共にスクレイピングのニーズが拡大

少し前までは、クローリングのためのサーバなどは自前で用意しなければならず、大規模なデータ収集は個人や小規模では難しい状況でした。
ところが最近ではAWSなどが登場してサーバーサイドに詳しくないソフトウェア開発者でも苦労せずクローリングができる環境が整ってきました。
個人もそうですが、いままで投資の面で二の足を踏んでいた企業が積極的にクローリングを行えるようになってことで、併せてスクレイピングの重要性も高まってきました。
ニーズが拡大した理由を改めてまとめると、以下のようなものが挙げられます。

インフラが簡単に用意できるようになった

パブリックドメインなどオープンなデータが増えてきたため、対象データが多くなった

データ分析ブームが起きている

Pythonはデータ分析のライブラリが充実しているので、スクレイピングといえばPythonを利用しているエンジニアも多いです。

スクレイピングを体験する

今回は、CSSセレクタを使用してデータを取得する方法をご紹介します。

CSSセレクタとは

CSS(カスケード・スタイルシート)を記載する際には以下のように書くことが多くあります。


#test{
color: #red;
}
#test > .subtest{
color: #blue;
}

この中での「#test」及び「#test > .subtest」がCSSセレクタとなります。
一般的にはこれらを使用してHTMLを装飾します。
今回の場合なら「#test」で指定された部分は文字色が赤色、更にその中で「.subtest」で指定された部分は文字色が青色になるといった具合です。

Pythonコードを生成する

今回WEBスクレイピングするにあたっては、Pythonとスクレイピングに特化した機能を持つライブラリ「BeautifulSoup」を使用します。
採ってくるデータは、日本経済新聞の日経平均株価を取得します。


# coding: UTF-8
import urllib2 #URLを開くためのライブラリ
from bsoup import BeautifulSoup #スクレイピング機能のためのライブラリ

# データを取得するURL
url = "https://www.nikkei.com/markets/kabu/"

# URLアクセスした結果やHTML内容を取得する
cont = urllib2.urlopen(url)

# HTML部分だけを取り出して、解析結果を取得する
bs = BeautifulSoup(cont, "html.parser")

# 解析結果から、CSSセレクタを指定して、その場所に書かれているした文字列を表示する
print bs.select_one("#CONTENTS_MARROW > div.mk-top_stock_average.cmn-clearfix > div.cmn-clearfix > div.mkc-guidepost > div.mkc-prices > span.mkc-stock_prices").text

CSSセレクターの指定方法

自分で作成したHTMLなどではもちろんわかりきっていますが、今回のように公開されている情報とはいえ、一般的なWEBサイトはなかなか複雑で、CSSセレクタと一口にいっても特定が難しいのが現実です。
実際、先ほどの日本経済新聞のサイトでは、


#CONTENTS_MARROW > div.mk-top_stock_average.cmn-clearfix > div.cmn-clearfix > div.mkc-guidepost > div.mkc-prices > span.mkc-stock_prices

と指定しないと株価が取得できません。
こういったものを手作業で書くのは、間違いのもとですし、そもそも見つけるのが大変です。
WEBブラウザでは、こういったCSSセレクタがどういった経路になっているかを自動的に生成してくれる機能があります。
例えば、Google Chromeの場合には以下の手順でCSSセレクタを取得できます。

画面を右クリックして検証をクリックすると開発者ツールが表示されます。

取得させたい値が存在する要素(テキストボックスやラベルなど)を右クリックして「copy」→「Copy Selector」を選択します。
これでGoogle Chromeが自動的に生成したCSSセレクターがクリップボードにコピーされています。

コピーした値を、さきほどのPythonコードの最終行、select_one関数の引数に指定すれば完了です。

Pythonコードを実行する

実際にコードを実行し、日経平均株価を取得します。

(実行結果)

さいごに

いかがでしたでしょうか。
こういったオープンデータが増えてきたことでスクレイピングもずいぶん一般的になりました。
ただし、こういったデータを取得するということは相手方のサーバにアクセスし、負荷をかけていることを忘れずにお願いします。
1度実行するぐらいでしたら、それは通常のWEBアクセスと変わりませんが、これを定期的に自動実行したり、大量取得したりする場合はかなりの負荷になります。
場合によっては、問題になったことも過去ありましたので、スクレイピングする際には、自分自身だけでは完結しない環境ということを念頭において作業してください。

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

11月11日、18日開催決定!2日間で人工知能(AI)を学習するPythonコースが開講

今回、当社(WebCamp)では、現役フリーランス・エンジニアとしてPythonの最前線で活動している講師をお招きし、2日間でPythonの基本から機械学習の基礎まで学ぶ短期集中型のコースを開講します。
Pythonの基礎プログラミング能力を身につけたい方機械学習やAIに興味はあるが学習できていない方現役Pythonエンジニアからリアルな話を聞きたい方
上記にあてはまる方は、ぜひご参加ください!

12月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
11月受入枠は満員となっております。12月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

関連キーワード
学習の関連記事
  • 【誰でもわかる!】エンジニアの仕事内容を徹底解説
  • 初心者でも一瞬でわかるプログラミングの考え方・思考法
  • エンジニア必見!エンジニアが成長できるブログ紹介
  • エンジニアとは?仕事内容、年収、将来性を徹底解説
  • 【Rails入門説明書】find、find_byについて解説
  • プログラミング未経験者でも出来る開発環境構築
おすすめの記事