の世界に飛び込んでみませんか? ウェブスクレイピング 複雑なコードに煩わされることなく?
と パイソン と図書館 ビューティフル・スープ、簡単にできます データの抽出と整理 d’un site web en quelques lignes seulement.

PythonでBeautifulSoupを使ってスクレイピングするための前提条件
✅ Avant de vous lancer, il est important d’avoir quelques プログラミングの基礎.そうすることで、コードがどのように機能するかをよりよく理解できるようになる。 Pas besoin d’être expert, mais savoir lire et exécuter un script Python vous aidera beaucoup.
次に、まずやるべきことは以下の通りだ。 を作る Pythonでスクレイピング ビューティフルスープで:
- インストール パイソン ainsi qu’un environnement de développement.
- インストール
ピップ, l’outil qui permet d’ajouter facilement des bibliothèques Python. - インストール ビューティフル・スープ というコマンドを使う:
pip install beautifulsoup4
- インストール リクエスト コマンドでウェブページを検索する:
pip install リクエスト
PythonとBeautifulSoupでウェブスクレイピングをするには?
簡単なウェブスクレイピング・プロジェクトのチュートリアルに従いましょう。

プロジェクト : récupérer le titre d’une page et tous les liens qu’elle contient.
ステップ 1: リクエストでページの内容を取得する
を実施する。 HTTP GETリクエスト をURLに追加するには リクエスト.
📌 RequestsでHTTPリクエストを送信すると、サーバーは常にステータスコー ドを返します。これらのコードは、リクエストが成功したかどうかを示します。
200 成功した。
301 / 302 リダイレクション。
404 ページが見つかりません。
500 内部サーバーエラー。
.status_code.にリクエストを送るコードの例を以下に示す。 ボンジュール・ドット・コムステータスコードをチェックし、問題がなければHTMLコンテンツの抜粋を表示する:
輸入リクエスト
# 対象URL
url = "https://bonjour.com"
# GETリクエストを送る
レスポンス = requests.get(url)
# ステータスコードをチェックする
if response.status_code == 200:
print("成功: ページが取得されました!")
html = response.text # ページのHTMLコンテンツ
print("HTMLコンテンツの抜粋:")
print(html[:500]) #は最初の500文字だけを表示する
else:
print(f "エラー: ステータスコード {response.status_code}")
ステップ2:BeautifulSoupでHTMLコードを分析する
レスポンステキスト)、そのページのすべてのHTMLコードを含む文字列が得られる。このHTMLを簡単に操作するには ビューティフル・スープ オブジェクトを作成する ビューティフル・スープ.「html.parser). Cela permet à BeautifulSoup d’interpréter correctement le HTML et d’éviter les avertissements.from bs4 import BeautifulSoup
インポートリクエスト
url = "https://bonjour.com"
レスポンス = requests.get(url)
html = response.text
# パーサを指定することを推奨する
soup = BeautifulSoup(html, "html.parser")
ステップ3:要素の検索と抽出
- 用途
find()とfind_all()
# タイトルを検索 <h1>
h1 = soup.find("h1")
print(h1.get_text())
# すべてのリンクを取得する <a>
liens = soup.find_all("a")
for lien in liens:
print(lien.get_text(), lien.get("href"))
- 属性による要素のターゲティング
以下のような属性で検索を絞り込むことができます。 クラス, ID またはその他のHTML属性。
⚠️ 述べる Pythonでは、次のように書きます。 クラス それ以外の クラス 予約語 クラス.
# 特定のidを持つdivの取得
container = soup.find("div", id="main")
# 特定のクラスを持つすべてのリンクを取得する
nav_links = soup.find_all("a", class_="nav-link")
- でCSSセレクタを使用する。
セレクト
より正確な検索には セレクト をCSSセレクタで指定します。
# 記事タイトルの全リンク
article_links = soup.select("article h2 a")
# 全て <a> href属性が "http "で始まるもの。
links_http = soup.select('a[href^="http"]')
The CSSセレクタ sont très puissants si vous voulez cibler exactement certaines parties d’une page sans parcourir tout le HTML manuellement.
Comment extraire des données d’un tableau HTML avec BeautifulSoup ?

Jusqu’ici, nous avons vu comment récupérer des titres, des liens ou encore du texte dans une page web.
⚠ Mais souvent, les vrais cas d’utilisation sont plus complexes : 構造化データ抽出 comme des tableaux ou des listes, la gestion de la pagination ou encore la résolution d’erreurs fréquentes liées au scraping. C’est exactement ce que nous allons voir ensemble.
表とリストの抽出
ウェブサイトは多くの場合、データを HTMLテーブル (<table>, <tr>, <th>, <td>または リスト (
- /
- )。これらの構造を使用可能なデータに変換するためには、行ごと、あるいは要素ごとに構造を調べる方法を学ぶ必要がある。
いつでも HTMLテーブルを取り出す原理は単純だ:
- ヘッダーの回復 (
<th>)で列見出しを識別する。 - ✅ 各行をブラウズする (
<tr>)とセルの検索(<td>を含む)。 - ✅ 情報をリストや辞書に保存する。
の場合 HTMLリスト (
- または
- の組み合わせ) :
- ✅ すべてのタグを見つける
と- 。
find_all. - ✅ コンテンツ(テキストまたはリンク)を取得し、Pythonリストに追加する。
要約すれば :
タグ
<table>,<tr>,<th>,<td>はテーブルの再構築に使われる。
タグ/,はHTMLのリストをPythonのリストに変換するために使われます。- 。
これはテーブルを使った例である:
html = """ <table> <tr> <th>苗字</th> <th>年齢</th> <th>街</th> </tr> <tr> <td>アリス</td> <td>25</td> <td>パリ</td> </tr> <tr> <td>ボブ</td> <td>30</td> <td>リヨン</td> </tr> </table> """ # BeautifulSoupオブジェクトの作成 soup = BeautifulSoup(html, "html.parser") # 配列からヘッダーを取り出す headers = [th.get_text(strip=True) for th in soup.find_all("th")] ヘッダーを配列から取り出す。 print("Headers:", headers) # データの行を取り出す(1行目はヘッダーなのでスキップする) 行 = []. for tr in soup.find_all("tr")[1:]: cells = [td.get_text(strip=True) for td in tr.find_all("td")]. if cells: rows.append(cells) print("Lines :", rows)ここだよ、
find_all("th")ヘッダーとfind_all("td")は各行のセルを取り出す。をループする。<tr>を使用して、テーブルを行ごとに再構築する。以下はリストに基づいた例である:
from bs4 import BeautifulSoup html_list = ""- アップル</li
- バナナ</li
- オレンジ</li </ul """ soup = BeautifulSoup(html_list, "html.parser") # リストからアイテムを取り出す items = [li.get_text(strip=True) for li in soup.find_all("li")]。 print("Extracted list:", items) # ["Apple", "Banana", "Orange"].
ここでは、すべての
はそのままPythonのリストアイテムに変換され、次のような結果になります。- 。
[アップル」、「バナナ」、「オレンジ」]。.ページネーションとリンクの管理
多くの場合、データは1ページに収まらない。その場合は “page suivante” または 番号付きページネーション (?page=1, ?page=2, ...).
📌 どちらの場合も、次のことが必要です。 カール (ループでブラウズ)してすべてのページをフェッチし、データをマージする。
ページパラメーターを使用した例 :
インポートタイム インポート リクエスト from bs4 import BeautifulSoup # ページネーション付きURLの例 base_url = "https://bonjour.com/articles?page={}" HEADERS = {"User-Agent": "Mozilla/5.0"}. all_articles = [] (すべての記事) # 閲覧するページが5つあると仮定する for page in range(1, 6): url = BASE_URL.format(page) r = requests.get(url, headers=HEADERS, timeout=20) if r.status_code == 200: soup = BeautifulSoup(r.text, "html.parser") # 記事タイトルを抽出する articles = [h2.get_text(strip=True) for h2 in soup.find_all("h2", class_="title")]. all_articles.extend(articles) else: print(f "ページ{page}でエラー(コード:{r.status_code})") time.sleep(1.0) # 丁寧さ print("Articles retrieved:", all_articles)簡単に説明しよう:
- Préparer l’URL avec un emplacement {} pour insérer le numéro de la page.
BASE_URL = "https://bonjour.com/articles?page={}- Certains sites bloquent les requêtes sans “identité de navigateur”. Ajouter un User-Agent évite d’être pris pour un bot.
headers = {"User-Agent": "Mozilla/5.0"}. requests.get(url, headers=headers)- 1ページから5ページまでループ。
for page in range(1, 6):- ページからHTMLを取得する。
requests.get(url)- サイトが応答しない場合の待ち時間を制限する。
requests.get(url, timeout=20)- パーサーのページ。
BeautifulSoup(response.text、"html.parser")- Récupérer tous les titres d’articles.
find_all("h2", class_="title")- 見つかった項目をグローバルリストに追加する。
all_articles.extend(articles)- 各リクエストの間に一時停止を導入することで、サーバーに負荷をかけすぎず、BANされないようにする。
time.sleep(1.0)- ループの後
すべての記事を含む 全5ページのタイトル.
よくある過ちと課題
❗ Le scraping, ce n’est pas toujours appuyer sur un bouton et tout est bon. Vous pourrez rencontrer des obstacles fréquents comme :
- HTTPエラー
404 ページが見つかりません
403 アクセス禁止
500 サーバー側エラー例 :
response = requests.get(url) if response.status_code == 200: # ページOK print("ページの取得に成功しました") elif response.status_code == 404: print("エラー:ページが見つかりません") else: print("コードが返されました:", response.status_code)- スクレイピングをブロックするサイト
Certains détectent les requêtes automatiques et bloquent l’accès.
- 動的ページ(JavaScript)
BeautifulSoupは静的なHTMLしか読まない。ページがその JavaScriptコンテンツ何も見えないだろう。
この場合、次のようなツールを使用します。 セレン どこ 劇作家.
しかし、ブロックされたり、サイトに損害を与えたりすることなく、効率的にスクレイピングしたいのであれば、ベストプラクティスを紹介しよう:
- を尊重する。 robots.txtファイル d’un site web.
- セットアップ 締め切り time.sleep()を使う)。
- 使用 代理人 そして回転させる。
- 定期的な交換 ユーザーエージェント.
SeleniumとBeautifulSoupでウェブをスクラップするには?

SeleniumとBeautifulSoupを使ったChromeでのWebスクレイピング。Alucare.frのクリスティーナ ⚠ 備忘録 : BeautifulSoup est un excellent analyseur HTML, mais il ne peut pas exécuter JavaScript d’une page web. C’est là que Selenium devient votre allié !
基本的にセレン 実際のブラウザを操作するJavaScriptを実行し、人間が閲覧しているかのようにページを表示する。ページが完全にレンダリングされると、BeautifulSoupはHTMLコードを解析する。そのため、欲しいものを抽出することができる。
ステップ1:SeleniumとBeautifulSoupをインストールする
Ici, au lieu d’utiliser la bibliothèque Request, on va utiliser セレン. Pour l’installer, il faut passer par ピップ.
pip install selenium beautifulsoup4次に ウェブドライバー は、お使いのブラウザのバージョンに対応しています(例:Google Chrome用のChromeDrive)。
✅ Vous pouvez soit le placer dans le même dossier que votre script Python, soit l’ajouter à la variable d’environnement PATH システムの
ステップ 2: Seleniumの設定
まず第一に、以下をインポートする必要があります。 ウェブドライバ Seleniumからブラウザを制御する。
from selenium import webdriver from selenium.webdriver.common.by import ByOn lance ensuite un navigateur. C’est lui qui ouvrira la page web et はJavaScriptを実行します。 (例:Chrome)。
driver = webdriver.Chrome()ブラウザーにどのページにアクセスするかを指示する。
driver.get("https://www.exemple.com")Si la page met du temps à afficher certains éléments, vous pouvez dire à Selenium d’attendre un peu.
driver.implicitly_wait(10)ステップ3:ページ・コンテンツの取得
ページが読み込まれたら フルDOM (JS実行後のHTMLソースコード)。
html_content = driver.page_sourceステップ4:BeautifulSoupによるHTML解析
Passez maintenant ce code source à BeautifulSoup pour pouvoir l’exploiter :
from bs4 import BeautifulSoup # BeautifulSoupオブジェクトの作成 soup = BeautifulSoup(html_content, 'html.parser') # 例: ページ上の全てのタイトルを取得 titles = soup.find_all('h2') for title in titles: print(title.get_text())👉 BeautifulSoupは、find()、find_all()、CSSセレクタなどの強力なメソッドを提供しています。 ターゲット と 要素を抽出する HTMLコード。
ステップ5:ブラウザを閉じる
Très important : fermez toujours votre navigateur après l’exécution pour libérer les ressources !
ドライバー終了()✅ そうです!Seleniumのパワーを組み合わせて、次のことができるようになりました。 ヒューマン・ナビゲーションをシミュレート (clics, défilements, etc.) avec l’efficacité de BeautifulSoup pour l’analyse du code HTML.
よくある質問
Pythonでウェブスクレイピングをするのに最適なツールは?
Il n’y a pas vraiment de meilleur outil universel, mais plutôt des solutions adaptées selon votre projet.
🔥 ビューティフル・スープ HTMLパーサー:シンプルで効果的にHTMLを分析し、素早くコンテンツを抽出します。HTMLを分析し、素早くコンテンツを抽出するためのシンプルで効果的なツールです。
🔥 スクラップ : c’est un framework complet, pensé pour gérer de gros volumes de données avec des fonctionnalités avancées.
🔥 劇作家 : parfait pour les sites complexes générés par JavaScript, car il simule un vrai navigateur et permet d’interagir avec la page comme un humain.
タグからコンテンツを抽出するBeautifulSoupの使い方 <div> ?
BeautifulSoupを使えば、特定のビーコンをターゲットにすることができます。 CSSセレクタ.からコンテンツを抽出するには <div>以下はその手順である:
- Requestsでページを取得し、BeautifulSoupで分析する。
from bs4 import BeautifulSoup インポートリクエスト url = "URL_OF YOUR_SITE" # 実際のURLに置き換える レスポンス = requests.get(url) html_content = response.text soup = BeautifulSoup(html_content, "html.parser")- を使用する。
セレクトタグをターゲットにするCSSセレクタを渡します。<div>
最初の項目を取り出すには
スープ.select_oneすべてのアイテムを取得するには
スープセレクトHTMLの例:
<div class="article"> <h2>記事タイトル</h2> <p>その段落にはこうある。</p> </div>CSSを使った例:
# "article "クラスを持つ最初のdivを取り出す div_article = soup.select_one("div.article") # そのテキストコンテンツを表示する if div_article: print(div_article.get_text(strip=True))ここで、CSSセレクタは
div.article.- Extraire des éléments à l’intérieur de la
<div>
# div内のタイトルを取得する title = soup.select_one("div.article h2").get_text() # div内の段落を取得する パラグラフ = soup.select_one("div.item p").get_text() print("タイトル:", タイトル) print("段落:", 段落)RequestsとBeautifulSoupはどのように併用できますか?
この2つのライブラリーは互いに補完し合っている。
- Requests récupère le contenu d’une page web avec une requête HTTP.
ターゲット・サイトにHTTPリクエストを送り、ページの生のHTMLコードをダウンロードする。
輸入リクエスト url = "https://sitecible.com" response = requests.get(url) # HTTPリクエスト print(response.text) #は生のHTMLを表示する。この段階では、タグでいっぱいの巨大なテキストしかない(<html>,<div><p>など)。
- BeautifulSoupはこのHTMLコンテンツを分析し、あなたの興味のあるものを抽出します。
Elle prend le HTML brut et le transforme en une structure organisée. Grâce à ça, vous pouvez naviguer facilement à l’intérieur du HTML : faire du repérage, extraire et récupérer les données.
from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, "html.parser") #はHTMLを解析する。 title = soup.find("h1").get_text() #は、HTMLのコンテンツを抽出する。 <h1> print(タイトル)私のウェブ・スクレイピング・コードが一部のサイトで機能しないのはなぜですか?
サイトによっては、すべてのコンテンツをHTMLで直接提供しているわけではないので、スクリプトは何も取得できないかもしれない。
Ces sites utilisent JavaScript pour charger dynamiquement les données. Or, BeautifulSoup ne permet pas d’JavaScriptでレンダリングされたデータを分析する.
このような場合は、次のようなツールをご利用ください。 劇作家 どこ セレン.
ウェブスクレイピングにおいてBeautifulSoupはどのような役割を果たすのか?
BeautifulSoup joue le rôle d’HTMLパーサー.
Il prend le code source d’une page sous forme de texte brut et le transforme en un objet structuré que vous pouvez parcourir facilement.
このライブラリがなければ、読めない巨大なテキストのブロックが表示されます。簡単に言うと、BeautifulSoupは プレーンHTML そして パイソンコード.
ウェブスクレイピング:BeautifulSoup vs Scrapy?
ビューティフル・スープ と スクラップ は、どちらもウェブスクレイピングに使われるが、まったく異なるものだ。
ビューティフル・スープ スクラップ HTMLを解析してデータを抽出するためだけのシンプルなライブラリ。 スクレイピング・プロセス全体を管理する完全なフレームワーク
(クエリー、リンクトラッキング、ページネーション、データエクスポート、エラー管理)。Pour tout résumé, BeautifulSoup facilite l’PythonによるHTMLデータ抽出.このライブラリーは、スクレイピングを素早く簡単に行えるので、初心者に最適だ。
そうでない場合は コーディングなし, l’outil complet ブライトデータ はウェブスクレイピングのための優れたソリューションでもある。
👉さて、あなたが何をかき集めることができたか、コメントで教えてください!
- ✅ すべてのタグを見つける
- と
- ヘッダーの回復 (
- 、





