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

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

- URL: https://toukei-lab.com/python-scraping
- 公開: 2022.11.29 / 更新: 2025.02.13
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、初心者向けにPythonでスクレイピングを行う上での注意点や実装方法そして勉強方法についてまとめていきます！スクレイピングは比較的カンタンに実装できますが、奥が深く他の知識と組み合わせることで高いシナジーが見込める分野です。
:::

こんにちは！

消費財メーカーでのデータサイエンティスト・デジタルマーケターを経て現在は独立し会社を経営しているウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です。

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

:::talk{who="robotan"}
だけど、実装するの難しそう・・・
:::

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

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

:::talk{who="umatan"}
スクレイピングは非常にカンタンで便利！ぜひこの機会にマスターしよう！
:::

この記事では、

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

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

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

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

::youtube{#o002RXImLKU}

ちなみに以下の僕のUdemy講座でBeautifulSoupを使った様々なスクレイピングプログラムを作っていきますので興味のある方はぜひ受講してみてください！

:::box
[【初心者向け】Webスクレイピングを学ぼう！PythonのBeautifulSoupで様々な応用プログラムを作ろう！](https://www.udemy.com/course/python-scraping-beautifulsoup/?referralCode=90D17CC80F9B80FD6FCA)

[![](/wp-content/uploads/2025/02/Udemy_scrape.jpg)](https://www.udemy.com/course/python-scraping-beautifulsoup/?referralCode=90D17CC80F9B80FD6FCA)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

Webスクレイピングを学んで色んな実務で使える有用なプログラムを作ってみたいならこれ！

今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-scraping-beautifulsoup/?referralCode=90D17CC80F9B80FD6FCA" note="＼30日以内なら返金無料／"}
:::

## スクレイピングとは

![PC](/wp-content/uploads/2018/08/PAK85_MBAdesagyou20140312_TP_V-e1557018085482.jpg)

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

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

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

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

<https://toukei-lab.com/python_stock>

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

![](/wp-content/uploads/2019/03/a94310ed4de4a08528a026f0badfdb2f_s-e1556972696222.jpg)

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

### Pythonの技術

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

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

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

<https://toukei-lab.com/python-mecab>

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

### HTMLにおけるDOMの知識

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

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

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

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

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

## スクレイピングの注意点

![](/wp-content/uploads/2019/03/PAK85_Projectannai20141123172459_TP_V-1024x648.jpg)

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

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

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

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

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

:::talk{who="umatan"}
要注意だ！
:::

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

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

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

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

![](/wp-content/uploads/2018/09/S_8608589564326-1024x768.jpg)

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

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

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

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

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

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

```python
#スクレイピング
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タグを全て引っ張ってくる指定をしています。

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

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

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

・・・

![スクレイピング結果](/wp-content/uploads/2019/08/beautifu-result-min.jpg)

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

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

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

```python title="Scraping.py"
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#ライブラリーインポート
import requests 
from bs4 import BeautifulSoup
from time import sleep

#スクレイピング
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

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

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

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

<https://toukei-lab.com/python-can>

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

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

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

### [【初心者向け】Webスクレイピングを学ぼう！PythonのBeautifulSoupで様々な応用プログラムを作ろう！](https://www.udemy.com/course/python-scraping-beautifulsoup/?referralCode=90D17CC80F9B80FD6FCA)

[![](/wp-content/uploads/2025/02/Udemy_scrape.jpg)](https://www.udemy.com/course/python-scraping-beautifulsoup/?referralCode=90D17CC80F9B80FD6FCA)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>3.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

Webスクレイピングを学んで色んな実務で使える有用なプログラムを作ってみたいならこれ！

今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-scraping-beautifulsoup/?referralCode=90D17CC80F9B80FD6FCA" note="＼30日以内なら返金無料／"}

### [実践】ビジネスケースとつなげてPythonで出来ること5つを学べる3日間集中コース](https://www.udemy.com/course/python-can/?referralCode=2CBAD21040FF57199084)

[![Udemy python](/wp-content/uploads/2020/04/Udemy-me2-min-1024x554.jpg)](https://www.udemy.com/course/python-can/?referralCode=2CBAD21040FF57199084)

<table class="table">
<tbody>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【講師】</th>
<td>僕自身！今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！</td>
</tr>
<tr>
<th>【時間】</th>
<td><span>3.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級～中級</span></td>
</tr>
</tbody>
</table>

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

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

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

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

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

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

:::talk{who="umatan"}
僕のTwitter([@statistics1012](https://twitter.com/statistics1012))にメンションを飛ばしてクーポンが欲しいとつぶやいてくれたら2000円以下になる講師クーポンを発行するよ！
:::

::button[このコースを見てみる]{href="https://www.udemy.com/course/python-can/?referralCode=2CBAD21040FF57199084" note="＼30日以内なら返金無料／"}

### **[【入門から実践まで】Webマーケティングの全体像とデータ活用を短時間で学び実際にSEO集客ツールを作ってみよう！](https://www.udemy.com/course/web-marketing-for-beginner/?referralCode=2F55DB2D1A30C8F41E4F)**

[![Webマーケ講座](/wp-content/uploads/2021/02/Udemy-me4-min-1024x538.jpg)](https://www.udemy.com/course/web-marketing-for-beginner/?referralCode=2F55DB2D1A30C8F41E4F)

<table class="table">
<tbody>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【講師】</th>
<td>僕自身！今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！</td>
</tr>
<tr>
<th>【時間】</th>
<td><span>2.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

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

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

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

:::talk{who="umatan"}
今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！
:::

::button[このコースを見てみる]{href="https://www.udemy.com/course/web-marketing-for-beginner/?referralCode=2F55DB2D1A30C8F41E4F" note="＼30日以内なら返金無料／"}

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

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

本記事では、**スクレイピング**について見てきました。

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

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

:::talk{who="umatan"}
自身のある人は、スクレイピングで取得したデータを自分の手で分析してみよう！
:::

Pythonでの実装が難しい方は[Octoparse](https://www.octoparse.jp/)というサービスで簡単にスクレイピングが出来るので試してみてください！

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

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

<https://toukei-lab.com/python-learn>