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

プログラミング教室・人気ランキング

 

順位 スクール名 こんな方におすすめ
   Web Camp 【業界最安値】1ヶ月通い放題/Webサービス等作りたい方
転職保証コースはこちら
  TechAcademy オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
まもなく定員オーバー当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース5月受入枠も残りわずかとなりました。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

4月7日 ,8日 限定開催】  2日間で人工知能(AI)を学習するコースが開校!
今回、当社(Web Camp)では、2日間でPythonの基本から機械学習の基礎まで学ぶ短期集中型のコースを開講します。
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つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

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

4月7日 ,8日 限定開催】  2日間で人工知能(AI)を学習するコースが開校!
今回、当社(Web Camp)では、2日間でPythonの基本から機械学習の基礎まで学ぶ短期集中型のコースを開講します。
Pythonの基本的なプログラミング能力を身につけたい方
機械学習や人工知能に興味はあるがなかなか手を出せない方
上記にあてはまる方は、ぜひご参加ください!

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

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

関連キーワード
学習の関連記事
  • 【入門者向け】Pythonでスクレイピングをする方法を解説!
  • 【入門者向け】Pythonでのクラスの使い方を徹底解説!
  • 【入門者向け】Pythonで機械学習をする9つのステップ!
  • 【入門者向け】PythonをLinuxで使用する方法を解説!
  • 【入門者向け】Pythonで数値計算をする方法を解説!
  • 【入門者向け】Pythonで人工知能を作る6つのステップ

当サイトで人気のオススメ転職サービスTOP3

1位 マイナビエージェント×IT

おすすめポイント

・平日忙しい人も、土曜日開催の個別キャリア相談会に参加できる

・職種や仕事内容(要件定義、上流工程から携わる仕事など)の要望が細かくできる
・マイナビの規模を活かした豊富で幅広い求人数

マイナビエージェント×ITの登録はこちら

2位 レバテックキャリア

おすすめポイント

・求人登録数4,000件以上

・エンジニア未経験、経験者両方に対応

・有名企業の採用担当者インタビューがみれる

・一次面接NGからの内定実績もあるほど、内定率が高い

レバテックキャリアの登録はこちら

 3位 type転職エージェント

おすすめポイント

転職者の71%が年収アップ

・IT系企業、特にエンジニアに限らず営業職の求人も充実している

各職種専門の転職アドバイザーが援助

type転職エージェントの登録はこちら

おすすめの記事