Python

【初心者向け】Pythonのbeautifulsoupでスクレイピングを実装してみよう!

PC
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、初心者向けにPythonでスクレイピングを行う上での注意点や実装方法そして勉強方法についてまとめていきます!スクレイピングは比較的カンタンに実装できますが、奥が深く他の知識と組み合わせることで高いシナジーが見込める分野です。

こんにちは!

消費財メーカーでのデータサイエンティスト・デジタルマーケターを経て現在は独立し会社を経営しているウマたん(@statistics1012)です。

Webサイトのテキスト情報を抽出したい時に非常に便利なのがスクレイピングという技術。

ロボたん
ロボたん
だけど、実装するの難しそう・・・

いやいや、実はPythonを使えばスクレイピングが簡単に実装できるんです。

Python初心者でも簡単に実装できるのでおすすめ!

ウマたん
ウマたん
スクレイピングは非常にカンタンで便利!ぜひこの機会にマスターしよう!

この記事では、

・スクレイピングとは何なのか
・Pythonでの実装

を見ていきたいと思います。

ここでのPython実装では初心者向けに本当に簡易的な実装しか行いませんが、ここで学んだことを土台にして実際に色々なスクレイピングを行ってみてくださいね。

以下の動画でも詳しく解説していますよ!

スクレイピングとは

PC

スクレイピングは、Webサイトから自動的にテキスト情報を抽出する技術。

毎回手動でデータを引っ張ってくるのは非常に面倒であるため、スクレイピングを使って自動でデータを引っ張ってくることが多いです。

非常に応用の範囲が広い技術で、様々な場面で用いられています。

例えば、スクレイピングを使うことで株価の情報などを自動的に日々抽出して自動売買するなど応用が可能です。

stock
【実践】Pythonで株価取得~分析・予測まで実践してみよう!当サイト【スタビジ】の本記事では、データサイエンスの実践として株価データを使った分析を解説していきます!実データをもとに学習・予測モデルを作る手法をマスターしていきましょう!...

スクレイピングに必要な知識・技術

さて、そんなスクレイピングですがどのような技術があれば実装が可能なのでしょうか?

Pythonの技術

スクレイピングはPythonの「Requests」「beautifulsoup」「selenium」というライブラリを使えば簡単に実装可能です。

スクレイピング後のデータに関してもPythonを用いて、解析を行うことが多いでしょう。

例えば、スクレイピングしたテキストデータを自然言語処理にかけて文書一致度を計算するなどができます。

Mecab 形態素解析
Pythonで文書類似度算出!MeCabで形態素解析後にTf-idfとCos類似度を使ってみよう当サイト【スタビジ】の本記事では、形態素解析器であるMeCabとPythonを用いて形態素解析を行いその後Tf-idfとCos類似度を使い最終的に文章の類似度を算出していきます。また、文章の著者が誰なのかをMeCabとLight gbmを用いて予測していきます。非常に簡単に実装できるかつ応用度が高いです!自然言語処理の世界に入るきっかけにしてくださいね!...

簡単に実装可能ですが、Pythonの技術はある程度必要です。

HTMLにおけるDOMの知識

実装はPythonを用いて行いますが、HTMLの構造そしてDOMについて理解しておくことが必要です。

DOMはドキュメントオブジェクトモデルの略で、HTMLを外部から操作するような仕組み・Webサイトの構造のことを表します。

HTMLでは、bodyタグやheadタグなど様々なタグを用いて階層構造を取ります。

そのタグの中にidやclassを記述することで、様々な表現が可能。そのidやclass、そしてタグを指定してスクレイピングを行うためHTML・DOMの知識が必要なのです。

コーディングするわけではないため、技術は必要ありませんがソースを読んで理解できるレベルの知識は必要になってきます。

スクレイピングの注意点

スクレイピングを行う際はいくつか注意点があるので確認しておきましょう!

スクレイピングが禁止されていないかどうか確認する

スクレイピングは、非常に便利な技術だけに悪用される可能性もあります。

そのためWebサイトによってはスクレイピングを禁止している場合があります。

スクレイピングが禁止されていないかどうか確認して行うようにしましょう!

ウマたん
ウマたん
要注意だ!

スクレイピングによって負荷をかけないようにする

スクレイピングを頻繁に行うとサーバーに負荷をかけることになります。

そのため頻繁にリクエストを送らないようにsleepメソッドを使用してリクエストの時間を空けるようにしましょう!

スクレイピングをPythonで実装

それでは、Pythonを用いてスクレイピングを実装していきましょう!

この記事では、特定URLのpタグに囲まれた本文テキストを抽出する簡易的なコードを実装していきます。

まずは、ライブラリをインポートしていきましょう!

#ライブラリーインポート
import requests 
from bs4 import BeautifulSoup
from time import sleep

sleepはスクレイピングのタイミングを制御します。

Webスクレイピングはサーバーに負荷をかけるため、処理を制御する配慮が暗黙のルールとなっています。

#スクレイピング
class Scr():
    def __init__(self, urls):
        self.urls=urls

    def geturl(self):
        all_text=[]
        for url in self.urls:
            r=requests.get(url)
            c=r.content
            soup=BeautifulSoup(c,"html.parser")
            article1_content=soup.find_all("p")
            temp=[]
            for con in article1_content:
                out=con.text
                temp.append(out)
            text=''.join(temp)
            all_text.append(text)
            sleep(1)
        return all_text

ここがスクレイピングの本体です。

クラスで定義しています。

URLを配列に格納して渡すと、pタグに囲まれたテキスト情報を配列に格納して返してくれるクラスScrを作りました。

URLを複数入れても複数データで返してくれます。

requestsはURLにアクセスして引っ張ってくるライブラリ。

そこからBeautifulsoupでタグを指定してテキストを取得します。

soup.find_all(“p”)の部分でタグを指定しており、今回はpタグを全て引っ張ってくる指定をしています。

ここの部分を変更することで抽出するタグを変更することができます。

sc=Scr(["https://toukei-lab.com/conjoint","https://toukei-lab.com/correspondence"])
print(sc.geturl())

最後に当サイトのコレスポンデンス分析の記事をスクレイピングしていきます。

・・・

スクレイピング結果

だいぶ雑ですが、テキストがリストに格納されていることが分かります。

これでスクレイピングは終了!

最後にコードをまとめておきます!

初心向けのPythonスクレイピング勉強法

スクレイピングはPythonで行えることの中でも比較的分かりやすく実装がカンタンな領域です。

Pythonでできること
【初心者向け】Pythonでできること7選!サンプルコードをまじえて解説!当サイト【スタビジ】本記事では、Pythonでできることを7つまとめていきます!!Pythonで何ができるのか分からない状況から深い理解にもっていきますよー!実際にPythonでの実装例や勉強方法も取り上げているのでぜひご自分の環境で手を動かして実装してみてくださいね!...

ただ、奥が深くスクレイピングしたデータをどのように扱うかで色んな幅が広がります。

また、本記事で使用したライブラリはBeautifulsoupですが、Seleniumも有名です。

もしスクレイピングを勉強したいなら以下のUdemy講座がおすすめ!

実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース

Udemy python
【オススメ度】
【講師】僕!
【時間】3.5時間
【レベル】初級~中級

手前味噌ですが、僕自身が公開しているコースです。

Pythonで出来ることのうち以下の5つを網羅して学んでいきます。

・データ集計・加工・描画
・機械学習を使ったモデル構築
・Webスクレイピング
・APIの利用
・Webアプリケーション開発

データ集計・加工・描画と機械学習モデル構築に関してはKaggleというデータ分析コンペティションのWalmartの小売データを扱いながら学んでいきます。

WebスクレイピングとAPI利用Webアプリケーション開発に関しては、楽天の在庫情報を取得してSlackに自動で通知するWebアプリケーションを作成して学んでいきます。

スクレイピングを組み込んだアプリケーションをしっかり開発していくので、スクレイピングを使って何かを作りたい!という人にはかなりオススメの講座になっています。

ウマたん
ウマたん
僕のTwitter(@statistics1012)にメンションを飛ばしてクーポンが欲しいとつぶやいてくれたら2000円以下になる講師クーポンを発行するよ!
\30日以内なら返金無料/このコースを見てみる

【入門から実践まで】Webマーケティングの全体像とデータ活用を短時間で学び実際にSEO集客ツールを作ってみよう!

Webマーケ講座
【オススメ度】
【講師】僕自身!
【時間】2.5時間
【レベル】初級

こちらはWebマーケティングについて全体像を理解してもらえるように僕自身が作成した講座になります。

Webマーケティングについて幅広く学べると同時にデータ分析についても簡単に理解した上で、最終的には簡単なSEOツールを作成していきます。

Webマーケティングの概要を理解したい方にもオススメですし、実際にプログラミング言語を使ってWebマーケのツールを実装してみたい方にもオススメの講座になっています!

ウマたん
ウマたん
僕のTwitter(@statistics1012)にメンションを飛ばしてクーポンが欲しいとつぶやいてくれたら2000円以下になる講師クーポンを発行するよ!
\30日以内なら返金無料/このコースを見てみる

ここら辺を学んでおいて、後は自分で実際に手を動かして色々スクレイピングしてみるのがオススメです!

Pythonでスクレイピング まとめ

スクレイピングについて見てきました。

スクレイピングは、様々な分野に応用が可能な非常に有用な技術です。

PythonのスキルとHTMLの知識で簡単に実装可能なので是非試してみてください!

ウマたん
ウマたん
自身のある人は、スクレイピングで取得したデータを自分の手で分析してみよう!

Pythonでの実装が難しい方はOctoparseというサービスで簡単にスクレイピングが出来るので試してみてください!

Pythonはデータ解析やスクレイピングそしてWebアプリケーション作成まで出来る幅広いプログラミング言語!

以下の記事で初心者がPythonを習得する方法についてまとめていますのでよければご覧ください!

Python独学勉強法
【Python独学勉強法】Python入門を3ヶ月で習得できる学習ロードマップ当サイト【スタビジ】の本記事では、過去僕自身がPythonを独学を駆使しながら習得した経験をもとにPythonを効率よく勉強する方法を具体的なコード付き実装例と合わせてまとめていきます。Pythonはできることが幅広いので自分のやりたいことを明確にして勉強法を選ぶことが大事です。...
スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら