最終更新日:2021/07/20
Pythonが学べるプログラミング学習サービスおすすめランキング
【第1位】キカガク:最大70%の給付金をもらいながらお得にPython・AIが学べるPython特化型スクール。
【第2位】Manajob: 無料で学べるノンプログラマー向けIT学習サービス。ブログのデータ収集から自動ログインまで学ぶことができます。
【第3位】PyQ: Python特化のエンジニア向け有料IT学習サービス。
【第4位】Aidemy:上場企業でも取り入れられたAIプログラミングスクール。こちらも補助金あり。
【キカガク】最大70%OFF!給付金をもらってAI人材を目指すなら!
日本マイクロソフト株式会社との共同開発講座を受講可能。経済産業省が定めるReスキル、JDLAのE資格の認定講座受けるならキカガク!
【Manajob】オリジナルアプリを作れるようになるIT学習サービス
Webスクレイピングなどの業務自動化からWeb制作まで学ぶことができるサービスです。
【PyQ】Python特化のプログラミング学習サービス
Python特化のプログラミングサービスです。
【Aidemy】人工知能特化型スクールに行きたいなら!
現役データサイエンティストから、現場で使われる知識を学ぶことが可能。大手上場企業の研修でも使われている高品質な学習をあなたに。

Pythonでは、スクレイピングという技術を使って、日々の業務を自動化することができます。今回の記事では、

  • スクレイピングという技術で何ができるようになるのか
  • スクレイピングをする際に学んでおいた方がよい知識
  • スクレイピングを学ぶ際に利用すべきWebサイト、書籍

などについて解説していきたいと思います。

✓この記事の読者の想定

こんな悩みを持っている方向けにまとめていきます!

  • Pythonのスクレイピング方法を知りたい
  • 日々の業務を自動化したい
  • プログラミングで何ができるのか知りたい

スクレイピングとは

スクレイピングとは、Webページの情報を取得することができる技術のことです。例えば、日経平均のデータを毎日エクセルに記録したいとします。でもこれを毎日

  • Webサイトにアクセスする
  • 該当する箇所をメモしてエクセルに貼り付ける
  • これを繰り返す

とやっていたら、相当面倒くさいですよね?

ほかにも例えば、あるWebサイトから、10記事分くらいデータを収集して、画像を全てダウンロードしたいとします。これも

  • Webサイトのページ一つ一つにアクセスする
  • ページの画像を1枚1枚フォルダにダウンロードする
  • 次のページに移動する
  • ページの画像を1枚1枚フォルダにダウンロードする

という風にやっていったら、らちがあかないですよね?

Pythonを利用したWebスクレイピングを行えば、指定した文字、ファイルなどを、プログラムで自動収集することができるようになります。

Pythonを利用したWebスクレイピングの活用方法

僕自身はWebマーケターなのですが、日々Pythonを利用して、スクレイピングを利用します。いくつか具体例を提示したいと思います。

Webサイトの関連キーワードを自動取得し、リバースエンジニアリング

あるキーワードを検索した際に、Googleの検索関連キーワードを取得できますよね。下の画像のような部分です。

関連キーワードを一つ一つさらに検索をかけると、そのキーワードに関する関連キーワードを取得することができます。

  1. 検索キーワードで検索
  2. 関連キーワードを取得
  3. 一つ一つ関連キーワードを検索して、その関連キーワードをCSVに出力

みたいな感じですね。

これをスクレイピングを利用すると、全て自動で収集することができます。

ニュースサイトの過去のブックマーク数をCSVに一括ダウンロード

あるニュースサイトでブックマークされた過去記事を20年分さかのぼって、どういうキーワードが記事タイトルに含まれるとバズりやすいのか分析する際に、スクレイピングを利用しました。これを手動でやると、たぶん1日かかるのですが、スクレイピングを利用して5分で完了させ、さらにPythonを利用して過去1万件の膨大なデータを分析しました。

このように、Pythonを利用したWebスクレイピングを利用すると、簡単に情報を自動収集することができるようになります。

PythonでWebスクレイピングするために必要な知識

PythonでWebスクレイピングするために必要な知識をまとめておきます。

HTML

HTMLは、このページを記述している文書です。F12ボタンをクリックすると、このWebサイトのソースが見れるかと思いますが、これがHTMLです。

Webスクレイピングは、結論からいうとURLからHTMLを読み込んで、データを収集することになります。ですので、HTMLの理解が最低限必要になります。

CSS

さらに、HTMLのうちどこを取得するかという問題なのですが、そこでCSSが出てきます。例えば、あるタグの中のここの一部分をとりたい!みたいなときに、CSSを利用して取得することになります。

JavaScript

JavaScriptはマストではないのですが、学んでおいた方がいいです。後述するSeleniumなどを利用する際に、利用します。

例えば、あるページを下にスクロールしたりする場合、JavaScriptのコードをスクレイピングのライブラリ上で利用することがあります。かゆいところに手が届かないときに、JavaScriptを利用することがあるので、覚えておきましょう。

Pythonでスクレイピングを行うためのライブラリと活用方法

PythonでWebスクレイピングをする方法は、いろいろありますが、代表的なのは以下の方法です。

  1. Requests / BeautifulSoupを利用する
  2. Seleniumを利用する

1. Requests / BeautifulSoupを利用する

初学者の人の場合は、Requests / BeautifulSoupを利用するとよいと思います。
Requestsは、Pythonライブラリでして、HTTPの通信を行うことができるライブラリとなります。

もう少し簡単にいうと、あるページにアクセスしたり、データを送ったりするネットワーク処理を操作できるライブラリですね。

簡単なデータであれば、RequestsとBeautifulSoupを利用すれば、取得することができます。

Seleniumを利用する場合

さて、Seleniumは、仮想ブラウザを立ち上げて、ブラウザを自動操作することでスクレイピングを行うことができるライブラリです。(※もともとはブラウザテストで利用するツールです)

Seleniumを使うメリットは、以下のような点があります。

  • Requestsだと認証で躓くが、Seleniumだとブラウザ操作でログイン情報を入力したりできるので、ログインが必要なサイトからのデータ取得が簡単
  • Requestsだと、あるWebページの一番下までいくと読み込まれるデータが存在する場合取得することができないが、Seleniumだと仮想ブラウザを操作して、JavaScriptでスクロールさせることができるので、データを取得することができる
  • ECサイトでボタンをクリックしないと出てこないデータがあって、Requestsだと取得することができないが、Seleniumだとクリックイベントなどをプログラムで操作することができる。
  • RequestsだとBot判定されて、スクレイピングすることができないが、Seleniumだと実際のブラウザを立ち上げて自動操作するので、Bot判定に引っ掛かりにくい

一方で、Seleniumを利用する場合、以下のようなデメリットがあります。

  • Requestsと比べると重い。ブラウザを一個立ち上げているのと変わらないので、高速処理したいときには不向き。
  • Chroniumなどの仮想ブラウザ(ドライバー)を設定する必要がある。Linuxの知識がないと設定が難しい。

PythonでWebスクレイピングする際のサンプルコード

それでは、サンプルコードです。

Requests

まず、Requestsを利用したサンプルコードです。
ある記事から、そのページのURLをすべて取得してCSVに落とすスクリプトの一部となります。

import requests
response = requests.get("https://review-of-my-life.blogspot.com/")
print (response.text)
html_doc = requests.get("https://review-of-my-life.blogspot.com").text
soup = BeautifulSoup(html_doc, 'html.parser') # BeautifulSoupの初期化
print(soup.prettify())

# TODO1 このページのaタグをすべて抜き出してください。(HTMLの内容)
real_page_tags = soup.find_all("a")
for tag in real_page_tags:
print(tag)

# TODO2 このページのaタグをすべて抜き出してください。(HTMLの内容)

for tag in real_page_tags:
print(tag.string)
# TODO3 このページのaタグをすべて抜き出してください。(HTMLの内容)

for tag in real_page_tags:
print(tag.get("href"))

 

Selenium

Seleniumのサンプルコードです。ここでは、Google検索で取得した関連キーワードを検索して、さらに関連キーワードを取得するスクリプトとなります。

from selenium import webdriver
import time
import requests
import json 
from bs4 import BeautifulSoup
import pandas as pd
import sys
import time
import os

args = sys.argv
root_query = input("キーワードを入力してください: ")

browser = webdriver.Chrome(os.getcwd() + "/chromedriver.exe")

columns = ["root_query", "branch_query", "query_name"]
df = pd.DataFrame(columns=columns)

browser.get('https://www.google.co.jp/search?num=100&q=' + root_query)
time.sleep(1)
tags = browser.find_elements_by_css_selector("p.nVcaUb")
print (tags)
related_words = []
counter = 0

for tag in tags:
branch_query = tag.text
print (branch_query)
related_words.append(branch_query)
se = pd.Series([root_query, branch_query,branch_query ], columns)
df = df.append(se, ignore_index=True)

related_words_num = len(related_words)
print (str(related_words_num) + "件関連キーワードを取得しました")
print (related_words)
counter = 1

for related_word in related_words:
print (str(counter) + "/" + str(related_words_num))
browser.get('https://www.google.co.jp/search?num=10&q=' + related_word)
second_tags = browser.find_elements_by_css_selector("p.nVcaUb")
for tag in second_tags:
branch_query = tag.text
print (branch_query)
se = pd.Series([related_word, branch_query,branch_query], columns)
df = df.append(se, ignore_index=True)
counter+=1
time.sleep(3)

df.to_csv(root_query + ".csv")
print ("CSVに出力しました")

PythonでWebスクレイピングする際の注意点

PythonでWebスクレイピングする際の注意点です。

  • Webサービスの利用規約で、スクレイピングが禁止されていないか確認する
  • Webサービスに過度な負担をかけないようにする

Webサービスの利用規約で、スクレイピングが禁止されていないか確認する

サービスによっては、個人情報保護、荒らしを防止するためにスクレイピングを禁止しているサービスがあります。僕が知っている範囲では以下の通りです。

例えば、マッチングアプリ Pairsは、利用規約で明確にスクレイピングやクローリングを禁止しています。

当社は、投稿コンテンツの利用を、利用者自身を除く、他の利用者その他の第三者に許諾するものではなく、利用者は他の利用者の投稿コンテンツの権利を侵害する行為を行ってはならないものとします。また、利用者は投稿コンテンツをクロール等で自動的に収集、解析する行為も行ってはならないものとします。(利用規約 | Pairs)

同様に、Twitter社も利用規約にスクレイピングを禁止しています。

Twitterから提供されている当社の現在利用可能な公開インターフェースを経由する(かつ、その使用条件を遵守する)ことなく、その他の何らかの手段(自動その他を問わず)でTwitterにアクセスまたはその検索を行うか、またはアクセスまたは検索を試みること。ただしTwitterと別途締結した契約によりこれを行うことが特に認められている場合は、この限りではありません。Twitterのクローリングは、robots.txtファイルの規定による場合には許可されます。ただし、Twitterの事前の承諾なしにスクレイピングを行うことは明示的に禁じられています。(ルール | Twitter)

日本では、裁判沙汰になる問題はあまりありませんが、海外では多く見られます。

参考)≫スクレイピングの倫理①海外のトラブル事例

Webサービスに過度な負担をかけないようにする

また、Webサービスに過度な負担をかけないようにしましょう。基本的には大規模なデータを取得する場合は、timeモジュールのsleepメソッドを利用して、待機時間を入れるのが礼儀です。

スクレイピングをする際に知っておいた方がよい知識と学習方法

スクレイピングをする際に前提として理解しておくべき知識です。

HTML / CSS

さきほど解説したように、HTMLはこのページのマークアップをしている言語で、CSSはHTMLを装飾する言語です。

HTML、CSSはスクレイピングで「ここを抜き出して!」と命令出すときに理解していないと難しいので、勉強しておきましょう。

Progate | HTML & CSS
ProgateのWebサイト制作で必要なHTMLとCSSを学べるコースです。実際にコードを書きながら、デザインを学べるので非常におすすめのチュートリアルになります。

JavaScript

JavaScriptはブラウザの動的な操作を制御するために利用します。スクレイピングでJavaScriptを利用する場合、

  • ブラウザで特定のボタンをクリックする
  • ブラウザを一番したにスクロースする

などを行う場合にJavaScriptが必要になります。こちらもProgateで学んでおきましょう。

Progate | JavaScript
ProgateでJavaScriptを学べるコースです。基礎的な文法をこちらで学んでみましょう。

Python

Pythonは、サーバーサイド言語のひとつのです。スクレイピングを行う際の処理はすべてPythonで実行します。Pythonの基礎はProgateで勉強してください。

Progate | Pythonコース
プログラミングの基礎を、環境構築なしで学べる、日本最大級のプログラミング学習サイト。まず、基礎を学ぶならここでやってみましょう。

また、Pythonを動作させるためには、Pythonの環境構築を行う必要があります。初学者には難しいと思うので、Google Colaboratoryを利用してPythonを動作させるのがおすすめです。特に難しい環境構築をせずとも、すぐにPythonをブラウザ上で動作させることが可能です。

Pythonでスクレイピングを学べるサイト

最後に、Pythonでスクレイピングを学べるサイト・本について紹介します。

PythonでWebスクレイピングが学べるサイト

おすすめは以下4サービスです。

キカガク

キカガク公式:
https://www.kikagaku.ai/

【キカガク】最大70%OFF!給付金をもらってAI人材を目指すなら!
日本マイクロソフト株式会社との共同開発講座を受講可能。経済産業省が定めるReスキル、JDLAのE資格の認定講座受けるならキカガク!

キカガクは、給付金をもらってお得に学習しながらAI人材を目指すことができる、完全オンラインのプログラミングスクールです。

DAI
特に、経済産業省が定めるReスキル、JDLAのE資格の認定講座などを受講できるため、キャリアアップを目指す方は必見ですね。

コースの特徴

オンライン動画学習サービス、Udemyでも絶賛された高品質の学習コンテンツ

キカガクの講座は、Udemyでも高い評価を得ており、1つのコースで35,000人以上が受講している講座もあります。

実際、受講した方の生の声を見てみても、非常にポジティブなものばかりでした。(受講された方のレビューはこちらから)

DAI
キカガクは大手企業の研修だけでなく、個人向けの講座でも高い評価を得ているのが分かりますね。

※また、キカガクは一度スクールに申し込むと、全ての講座を無期限で受講することができるのでかなりお得です。

実際の講座を受講前に体験することができる

キカガクでは、無料体験を申し込むだけでUdemy上で高い評価を得たコースを実際に体験することができます。

受講できるコースは以下の2つで、合計20時間分の学習動画無料になります。

  • Python&機械学習入門
  • 脱ブラックボックスコース
DAI
特に、脱ブラックボックスのコースはセールなしだと15,000円もするコースなので、まずは無料で機械学習や人工知能について学んでみたい!という方にもおすすめですね。

しかも、今なら長期コースを受講した方限定で、5万円分のAmazonギフトカードが貰えるキャンペーンが行われています!

DAI
そのため、給付金とAmazonギフトカードは併用することも可能なため、もともと79万円するコースが実質18万円台で受講できるようになります。

そのため、キカガクを受講するなら以下のような方がおすすめです。

  • まずは、スクールに行く前にAIや機械学習についてもっと詳しく知りたい
  • 将来的に仕事でデータサイエンスなどに関われるようになりたい
  • お得に資格取得をして、社内で更に活躍したい

※キカガクの講座の無料体験は、3分ほどですぐに学習を始めることができます

DAI
スクールに行くほどではないけどAIや機械学習に興味があるという方は、気軽に試してみるのがおすすめです。

【キカガク】最大70%OFF!給付金をもらってAI人材を目指すなら!
日本マイクロソフト株式会社との共同開発講座を受講可能。経済産業省が定めるReスキル、JDLAのE資格の認定講座受けるならキカガク!

Manajob

公式:https://www.manajob.jp

Manajobは、株式会社インディバースが運営する動画+テキストでIT系全般を学習できる越境型IT学習サービス。

  • Pythonを利用した自動化
  • Web制作

など、幅広いジャンルのコンテンツを、無料で学習することができます。

DAI
特に、非エンジニアの方が、はじめてITを学習して、業務効率化やオリジナルのアプリを開発したい!という方におすすめです。

実際に

  • ブログサイトのデータ収集
  • 自動ログインによる定期実行
  • データ分析
  • エステサロンのホームページ作成

など、ゴールから逆算して学習することができるのでおすすめです。

Manajobに無料登録して学習をはじめる

PyQ

PyQは、Pythonに特化したプログラミング学習サイトです。Web APIの利用方法や、スクレピングの基礎等を詳しく解説してくれています。

実際に僕も登録して、レビュー記事を書いてみたので、興味がある方はぜひ!

≫評判のよかったPyQを実際に試してみたら、予想以上によかったので感想を書いてみた

PyQ公式サイトもこちらにまとめておきます。

≫PyQ公式

Aidemy

Aidemyは、人工知能特化型プログラミング学習サービスです。つい最近スクレイピングコースが出たみたいですね。まだ試していないのですが、興味がある方はこちらをみてみてください。

≫アイデミー スクレイピング入門

コードを書かずにスクレイピングすることもできる

もちろんPythonを利用したほうが、細かい部分のスクレイピングを行うこともできます。

ただ、簡易的にスクレイピングを実行する場合は、ツールを利用してスクレイピングすることもできます。

  • Google Spreadsheet + Google Apps Script

Google Spreadsheet

 

あの有名なGoogle Spreadsheetでも、実はスクレピングができます。

IMPORTXML関数を利用すると、XPATHを指定して、スプレッドシート上にデータを取得することができます。

たとえば、タイトルを取得したい場合は、

IMPORTXML("https://example.com", "//title")

で、タイトルを自動収集することができます。

Google Apps Script(GAS)を利用したスクレイピングを使うメリットと利用方法まとめ

まとめ

ということで、PythonでWebスクレイピングをする方法について解説しました。プログラミング初心者であれば、

  • HTML
  • CSS
  • JavaScript
  • Python

を勉強したうえで、

  • キカガク
  • Manajob
  • PyQ
  • Aidemy

などを利用して勉強してみるのがよいかと思います。

Pythonのスクレイピングが学べるプログラミング学習サービスおすすめランキング
【第1位】キカガク:本気でPythonプログラミングを学びたい人向けのプログラミングスクール。補助金で大幅に安く受けられる
【第2位】Manajob: 無料で学べるノンプログラマー向けIT学習サービス。ブログのデータ収集から自動ログインまで学ぶことができます。
【第3位】PyQ: Python特化のエンジニア向け有料IT学習サービス。
【第4位】Aidemy:上場企業でも取り入れられたAIプログラミングスクール。こちらも補助金あり。

 

プログラミングを仕事にしたい人向け