初心者向けに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スクレイピングのやり方を練習してみてください。

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


・・・・・・

あ、ちょっと待ってください。
もしかして、WEBサイトでお悩みではないですか?

私たちキャンバスプロのデジタルコンテンツ・クリエイター集団です。WEBサイト制作システム構築はもとより、臨場感あふれる動画コンテンツ制作や、面白いデジタルコンテンツ制作もおてのもの。

私たちと一緒に、あなたのお客さまが驚くようなコンテンツを一緒に作りませんか?

>> キャンバスの会社サイト

私たちが今までにどんなものを作って何をして来たのか。一部をこちらに載せておきますので、よかったら見ていってください。

>> キャンバスの制作実績

制作のご相談・ご依頼はこちらからどうぞ。

>> 相談 or 見積 or 出来るかどうか話を聞く


<< お知らせ >>

2022年6月10日より株式会社キャンバスより新サービス「オンリーワン設計図」をリリースしました!btobの営業活動にお悩みの企業さま、ぜひご一読ください。

>> 「オンリーワン設計図」公式ページ

よろしければこちらの記事もご参照ください。

>> BtoB企業の向かう先と今後求められる営業マン ~BtoB営業マンは絶滅危惧種!? ~




CANVAS MAIL
SEARCH
SERVICE
弊社の営業資料や企画書、
販促チラシ、実績資料、
動画データ等を
ダウンロードできるサービスです。
東京オフィス
〒107-0052 東京都港区赤坂9-5-26
AKASAKA HEIGHTS 301
名古屋オフィス
〒464-0037 名古屋市千種区楠元町2-60-2
LOFT 3B
大阪オフィス
〒530-0001 大阪府大阪市北区梅田2-5-13
桜橋第1ビル304
金沢オフィス
〒920-0024 金沢市西念4-24-30
MGビル302
富山ヘッドオフィス
〒939-8204 富山県富山市根塚町1-1-4
ASNビル2F
ベトナムオフィス
Unit 615-617, 6 Floor, IMC Building, 62 Tran Quang Khai, Tan Dinh Ward, District 1, Ho Chi Minh City, VIETNAM