初心者向けにPythonを使ったWEBスクレイピングのやり方を事例付きで紹介!Beautiful Soupで簡単に情報収集する方法

2022.06.08
初心者向けにPythonを使ったWEBスクレイピングのやり方を事例付きで紹介!Beautiful Soupで簡単に情報収集する方法

Pythonを覚えたらまずやってみたいことと言えば、WEBスクレイピングですよね!

WEBスクレイピングはWEBサイトからこちらで欲しい情報を設定して取得する技術で、Pythonを使用すると比較的簡単に情報を集めて整理するところまで構築できます。

Pythonはもともとデータ収集や分析に適したプログラミング言語ですので、今回ご紹介するWEBスクレイピングをマスターすることで、現在は手動でやっている業務を自動化したり、日々のマーケティング業務を自動化したり、アイデア次第で新サービスの開発なども可能となります。

今回は、Pythonの基礎を覚えた後に、実際にWEBスクレイピングを行う際の手順とやり方、サンプルコードについて紹介します。




WEBスクレイピングを行う前の注意点

Pythonを使ったWEBスクレイピングはさまざまな情報を収集、自動化できますが、集めたデータの取り扱いには注意が必要です。

というのも、収集したデータを活用しようとした場合に、データの使い方次第では、複製権(著作権法第21条)や、公衆送信権(著作権法第23条)、翻訳権(著作権法第27条)などの著作権に抵触してしまう恐れがあります。

Pythonを使ったWEBスクレイピングを行う前に、やりたいことについてのAPIがすでに存在している場合はそちらを使いましょう。

十分なデータが得られない場合はPythonを使ったWEBスクレイピングが選択肢としてありますが、実行する場合は上記の著作権法に抵触しないよう、最新の注意を払うようにしましょう。

それでは次に、実際にPythonを使ったWEBスクレイピングのやり方を紹介します。

Pythonを使ったWEBスクレイピングのやり方

Pythonでスクレイピングをする場合に便利なBeautiful Soupというライブラリを紹介します。

環境

以下の環境で動作を確認しています。

  • Windows 10
  • Python 3.10.2
  • Beautiful Soup 4.11.1

 

Beautiful Soupとは

Beautiful Soupは、HTMLやXMLからデータを取得するためのPythonのライブラリです。

インストール

以下のコマンドを実行してBeautiful Soupをインストールします。

pip install beautifulsoup4

使い方

準備として、まずはじめにBeautiful Soupをインポートします。

from bs4 import BeautifulSoup

次にデータの取得元になるHTMLを記述します。
ここではサンプル事例として弊社キャンバスのコーポレートサイトから抜粋したものを使用します。

html = '''
<div class="linkArea">
<div class="linkList">
<a href="https://www.canvas-works.jp/news/" class="ro">NEWS</a>
</div>

 <div class="linkList inMenu">
<a href="https://www.canvas-works.jp/work/" class="ro">WORKS</a>
<div class="linkDetail">
<a href="https://www.canvas-works.jp/work/?type=app" class="ro">アプリ開発</a><a href="https://www.canvas-works.jp/work/?type=space-art" class="ro">空間演出型デジタルアート</a><a href="https://www.canvas-works.jp/work/?type=experience-art" class="ro">体感型デジタルアート</a><a href="https://www.canvas-works.jp/work/?type=web" class="ro">WEB</a><a href="https://www.canvas-works.jp/work/?type=movie" class="ro">動画制作</a> </div>
</div>

 <div class="linkList">
<a href="https://www.canvas-works.jp/journal/" class="ro">LAB</a>
</div>


 <div class="linkList">
<a href="https://www.canvas-works.jp/event/" class="ro">SEMINAR/EVENT</a>
</div>

 <div class="linkList inMenu">
<a href="https://www.canvas-works.jp/service/digital/" class="ro">SERVICE</a>
<div class="linkDetail">
<a href="https://www.canvas-works.jp/service/digital/" class="ro">デジタルイベント</a>
<a href="https://www.canvas-works.jp/service/web/" class="ro">WEB</a>
<a href="https://www.canvas-works.jp/service/system/" class="ro">システム開発</a>
<a href="https://www.canvas-works.jp/service/app/" class="ro">アプリ開発</a>
<a href="https://www.canvas-works.jp/service/movie/" class="ro">動画制作</a>
<a href="https://www.canvas-works.jp/service/3dcg/" class="ro">3DCG</a>
</div>
</div>

 <div class="linkList">
<a href="https://www.canvas-works.jp/company/" class="ro">COMPANY</a>
</div>

 <div class="linkList">
<a href="https://www.canvas-works.jp/recruit/" class="ro">RECRUIT</a>
</div>

 <div class="linkList contact">
<a href="https://www.canvas-works.jp/inquiry/" class="contact ro">CONTACT</a>
</div>
</div>
'''

次にHTMLからBeautiful Soupオブジェクトを作成します。

soup = BeautifulSoup(html, 'html.parser')

CSSセレクタを使う

オブジェクトを作成したらCSSセレクタを使ってデータを取得します。
select()メソッドは、セレクタにマッチする複数のタグを返します。

# .linkList > a にマッチするタグ
tags = soup.select('.linkList > a')
for t in tags:
    print(t.get_text())
# NEWS
# WORKS
# LAB
# SEMINAR/EVENT
# SERVICE
# COMPANY
# RECRUIT
# CONTACT
# .linkList .linkDetail a にマッチするタグ
tags = soup.select('.linkList .linkDetail a')
for t in tags:
    print(t.get_text())
# アプリ開発
# 空間演出型デジタルアート
# 体感型デジタルアート
# WEB
# 動画制作
# デジタルイベント
# WEB
# システム開発
# アプリ開発
# 動画制作
# 3DCG

select_one()メソッドは、セレクタにマッチする最初のタグを返します。

# .linkList > a にマッチする最初のタグ
tag = soup.select_one('.linkList > a')
print(tag.get_text())
# NEWS

null

PythonのWEBスクレイピングを情報解析に役立てよう

今回はPythonを使ったWEBスクレイピングのやり方について紹介しました。

PythonでWEBスクレイピングをするのであれば、Beautiful Soupライブラリを活用すると、簡単な記述でWEBページからの情報収集、データ解析及び、抽出が可能となります。

WEBスクレイピングのやり方をマスターすることで、社内の手動で行ってる作業を自動化したり、アイデア次第で商品やサービスの開発なども可能となります。

著作権やシステムの負荷には十分注意しつつ、ぜひ今回の記事を参考にしつつPythonを使ったWEBスクレイピングのやり方を練習してみてください。

今回は以上となります。
最後までお読みいただきましてありがとうございました。

CANVAS MAIL
SEARCH
SERVICE
弊社の営業資料や企画書、
販促チラシ、実績資料、
動画データ等を
ダウンロードできるサービスです。
東京オフィス
〒150-0013 東京都渋谷区恵比寿4-22-10
ebisu422 3F
富山ヘッドオフィス
〒939-8204 富山県富山市根塚町1-1-4
ASNビル2F
ベトナムオフィス
2th Floor, PLS building, 105-107 Co Giang, Co Giang ward, District 1, Ho Chi Minh city, Vietnam