プロのカウンセラーがキャリアの悩みを解決!

【初心者必見】Pythonを使ったWebスクレイピング入門。おすすめの書籍も紹介

作成: 2018.08.30

>>副業・フリーランスという働き方
個人で稼げるスキルを!独立まで完全サポート

あなたは、Pythonによるスクレイピングに興味はありませんか?

「プログラミングの知識がない」「そもそもPythonのインストールが難しそう」といった理由から、はじめられないという方も多いでしょう。今回は、プログラミング初心者でも安心の開発環境の構築なしでできるPythonによるスクレイピングについて解説します。

Google Colaboratoryを使って、今すぐスクレイピングを体験してみましょう。

PythonがWebスクレイピングにおすすめな理由

AI(人工知能)の機械学習に使えるプログラミング言語として、人気が高いPython。記述が簡潔で、初心者でも取り組みやすい点もその人気を支えています。

それだけでなく、Pythonはスクレイピングを行う場合にもとても扱いやすいです。スクレイピングの用途に適したライブラリが豊富で、少ないコードですぐにデータを取得できます。また、Google Colab上でPythonを使えば、環境構築なしですぐにプログラミングができる点も魅力。

ライブラリやインターネット上の情報を参考にできるので、プログラミング初心者の方でもとても取り組みやすいです。スクレイピングに興味があるけれど、どのプログラミング言語を使えば良いか迷っているという方は、まずはPythonを試すことをおすすめします。

Webスクレイピングについて

Webスクレイピングを行う上で、その概要を理解することは利用目的を明確にして不要なリスクを避けるためにとても重要です。

Webページのデータを取得する手段

スクレイピングはWebページのデータを取得する手段の1つです。クローリングによってWebページをリンクを辿り、スクレイピングによって自分がほしいデータを抜き出します。アプリ・サービスの開発や効率的な情報の収集など、スクレイピングにはさまざまな活用方法があります。

外部のデータを活用する方法はスクレイピングだけではなく、APIを利用するという選択肢もあります。WebサイトからAPIが提供されていて、あなたが求めるデータと合っている場合にはそれを利用すると良いでしょう。

利用する場合には注意が必要

スクレイピングは外部のWebサイトから情報を取得します。取得する際には、Webサイトの利用規約に反していないか必ず確認しましょう。場合によっては、著作権法に触れる場合や不法行為責任を問われる場合もあります。

PythonでWebスクレイピングをやってみよう

それでは、早速PythonでWebスクレイピングに挑戦してみましょう。以下で、シンプルなWebスクレイピングを行う方法について解説していきます。

環境構築なしで使えるGoogle Colaboratoryを使用

今回は、開発環境の構築なしですぐに使えるGoogle Colaboratoryを使用します。Google Colaboratory(以下、Colab)は、機械学習の学習を目的に教育機関・研究機関向けに開発された研究プロジェクトです。

オープンソースプロジェクトのJupyter Notebookをベースに作られており、クラウド上で利用が可能。インターネット環境とパソコンがあれば、無料で手軽に使用できます。

Colabで制作したノートブックはGoogle Driveに保存されます。そのため、チームなどで開発を進める場合にも、共有がスムーズです。また、最大の特徴はコストをかけずにGPUが利用できる点です。これにより、Colabは機械学習に携わるエンジニアから注目を集めるようになりました。

Colabは以下のURLにアクセスすれば、すぐに利用できます。

Hello, Colaboratory – Colaboratory

Google ColaboratoryはPython 3が利用可能

Colabでは、Python 2とPython 3のどちらも利用可能。今回は、Python 3を使用します。Colabはスクレイピングに必要となるライブラリが揃っている点も初心者におすすめな理由です。

パッケージをインストール

まず、新しいノートブックを作成し、スクレイピングに必要となるパッケージをインストールしましょう。今回使うのは、以下の2つのパッケージです。

Requestsは、Webサイトにアクセスして構造のデータを取得するためのライブラリ。Beautiful SoupはWebサイトを構築しているHTML・XMLの内部の解析を行い、欲しいデータを取得するためのライブラリです。

「ファイル」から「Python 3の新しいノートブック」を開きます。まず、インストールされているパッケージを確認します。「!」をつけると、LinuxのコマンドをColab上で使用可能です。

!pip freeze

見づらい場合には、下記のコマンドで対象をしぼりましょう。

!pip freeze | grep -e request -e beautiful

現状のColabでは、必要となるパッケージがインストールされています。せっかくなので、使用が推奨されているlxmlをインストールしてみます。

!pip install lxml

再度、インストールされたパッケージを確認すると、「lxml==4.2.4」が追加されていることがわかります。「pip」は基本となるコマンドなので覚えておきましょう。

Webページのデータを取得

まずは、Webページのデータを丸ごと取得してみましょう。

import requests
from bs4 import BeautifulSoup

url = “”
r = requests.get(url)
soup = BeautifulSoup(r.text,”html.parser”)

print(soup.text)

「url」には、スクレイピングを行いたいURLを入力してください。これで、取得したWebページの情報がすべて表示されました。

Webページで要素を指定してデータを取得

WebページはHTML・CSSなどで構成。HTMLはh1・div・aなどの要素入れ子の構造になっています。

次に、その要素を指定してスクレイピングを行います。

まず、タイトルを取得してみましょう。

import requests
from bs4 import BeautifulSoup

url = “”
r = requests.get(url)
soup = BeautifulSoup(r.text,”html.parser”)

print(soup.title)

タグと一緒にタイトルが表示されます。次は「a」のタグを取得します。同様に「soup.a」と記述すると、1つしか取得できません。そのため、ここでは「find_all」を使用します。

import requests
from bs4 import BeautifulSoup

url = “”
r = requests.get(url)
soup = BeautifulSoup(r.text,”html.parser”)

print(soup.find_all(“a”))

タグ・URL・テキストがすべて表示されますが、その中から必要とする情報だけを表示させることも可能です。

import requests
from bs4 import BeautifulSoup

url = “”
r = requests.get(url)
soup = BeautifulSoup(r.text,”html.parser”)

tags = soup.find_all(“a”)

print (“HTMLを含めて表示:”)
for tag in tags:
print(tag)

print (“テキストのみを表示:”)
for tag in tags:
print (tag.string)

print (“URLのみを表示:”)
for link in tags:
print (link.get(“href”))

「find_all」を使えば、CSSのクラスやテキストの内容を指定してスクレイピングを行うことも可能です。Pythonのライブラリを使用すれば、このように簡単にスクレイピングができます。

取得した情報をCSVに出力する

スクレイピングを取得したデータを出力することももちろん可能です。

import requests
from bs4 import BeautifulSoup
import csv

url = “”
r = requests.get(url)
soup = BeautifulSoup(r.text,”html.parser”)

link = []

tags = soup.find_all(“a”)

link.append([tags])

with open(‘link.csv’, ‘w’, encoding=’shift-jis’) as f:
writer = csv.writer(f, lineterminator=’\n’)
writer.writerows(bookmarks)

取得した「a」の要素を「link.csv」というファイルで出力しました。テキストと数字を紐づけて表として出力するなどより細かく設定をすれば、マーケティングなど業務効率化にも役立つでしょう。

ファイルのアップロードとダウンロード

Colab上で出力したファイルをダウンロードする場合には、下記のコマンドを使用します。

files.download(‘ファイル名’)

また、ローカル環境からColabへファイルをアップロードしたい場合には下記のコマンドを使用。ファイルを選択すれば、アップロードが完了します。

from google.colab import files
upload = files.upload()

将来の不安はスキル習得で解決

「ずっと今の仕事を続けるのは不安」「将来収入があがる職につきたい」「やりたいことがない」

いま、日本では多くの若者がそう感じています。あなた1人じゃありません。
毎月数千人の方がTECH::EXPERTの無料キャリア相談に参加しています。

プロと話してキャリア構築を少しでもクリアにしませんか?

Pythonでより高度なスクレイピングを行うには

より高度なスクレイピングを行う場合には、モジュールやフレームワークを利用するといった方法があります。もちろん、このような高度なスクレイピングを行うためには、基本的なPythonのプログラミングのスキルを身につける必要があります。

モジュール・フレームワークを利用する

Scrapy

ScrapyやSeleniumを利用すれば、より高度なスクレイピングがスムーズに行えます。

Scrapyはスクレイピング用の高度なフレームワークで、クローリング・スクレイピングにおけるさまざまな機能が利用可能。リンクを辿って複数のWebサイトからスクレイピングを行いたい場合に便利です。

Scrapy | A Fast and Powerful Scraping and Web Crawling Framework

Selenium

Seleniumは自動テストツールとして知られていますが、スクレイピングにも役立ちます。Seleniumを使えば、WebブラウザでJavaScriptが動作して表示される動的なデータも取得可能です。

Selenium – Web Browser Automation

CSSセレクターを活用する

Pythonでスクレイピングを行う際には、CSSセレクターによって取得するデータの指定が可能です。しかし、Webページによっては、CSSセレクターが細かい場合もあります。

そのような場合には、Google Chromeのコンテキストメニューの「検証」をクリック。指定したいHTMLを右クリックし、「Copy → Copy selector」を選択すれば自動でCSSセレクターが生成されます。

取得したいWebページの要素をスムーズに指定できるのでとても便利です。

RSS Feedをスクレイピングする

Feedparserというライブラリを使えば、RSS Feedからもスクレイピングできます。「すぐに消えてしまうデータを取得したい」「自分好みのRSS Feederを作りたい」といった場合に役立つでしょう。

Pythonの学習を行う

スクレイピングを自分のイメージ通りに行うためには、Pythonの学習はやはり必要です。サンプルコードや手順は豊富に見つかりますが、どのように動いているかを理解しなければ的確な作業効率化は難しいでしょう。

Pythonはとても学習しやすいプログラミング言語ですので、スクレイピングに興味を持った方はこの機会に学習をはじめてみてはいかがでしょうか。

ITスキル習得の無料相談はこちら

PythonでのWebスクレイピングの学習におすすめの書籍を紹介

以下で、Pythonでのスクレイピングの学習に役立つおすすめの書籍について紹介します。

Pythonクローリング&スクレイピング ―データ収集・解析のための実践開発ガイド―

Pythonでのクローリングとスクレイピングが基礎から学べるおすすめの書籍です。初心者でもつまづきづらく、Scrapyについても解説されています。

Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう

スクレイピングによるデータの取得をはじめ、収集したデータの機械学習での活用法まで幅広く学べる本です。Pythonの基礎を理解した中級者向けの内容となっています。

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング

定型業務をPythonに任せることで、効率化を図ることを目的とした書籍。タイトルにインパクトもあることも手伝い、この本は大きな話題を集めました。

スクレイピングだけでなく、Pythonの基礎がわかりやすく書かれているため、初心者におすすめの本と言えるでしょう。

Pythonによるクローラー&スクレイピング入門 設計・開発から収集データの解析・運用まで

Webスクレイピングに焦点を当て、クローリング・スクレイピングの基礎から応用・運用までしっかりと学べます。開発を担当するエンジニアや業務でデータ収集を行うプログラマーを対象とした書籍です。

PythonによるWebスクレイピング

基礎から、高度な使用方法・法律面までWebスクレイピングについて体系的に学習が可能です。JavaScriptに対応したSeleniumを使用したスクレイピングについても詳しく書かれています。

まとめ

今回は、ColabでPython 3を使って行うスクレイピング方法について紹介しました。プログラミング初心者の方でもすぐにできる簡単な内容でしたが、スクレイピングの概要や仕組みは理解していただけたのではないでしょうか。

この記事を読んで、スクレイピングに興味を持った方は紹介した書籍を参考にしていただき、さらに高度な活用に挑戦してみてください。

一度挫折したプログラミング、TECH::EXPERT(テック エキスパート)ならやりきれます

プログラミングを独学で学ぶことに限界を感じていませんか?

効率よくプログラミングを学ぶなら、プロのメンター(講師)のもとでしっかりと教わることがおすすめです。TECH::EXPERT(テック エキスパート)ではすぐにメンターに質問できるから「わからない」を「わかる」に変えられてプロとして通用する技術が身につきます。

同じくプログラミングを学ぶ同期がいるのも挫折しないポイントです。

無理な勧誘は一切ありません。まずはお気軽に無料カウンセリングでご相談ください。

無料カウンセリングの日程を見る

この記事を書いた人

Kimura Hiroto
音楽・ITをはじめとするさまざまなジャンルのライティングを行っています。ITエンジニアの経験を生かし、TECH::NOTEでの執筆を担当。好きな食べ物は豆腐。