BeautifulSoupとDOM操作の基本手順

Webスクレイピングにおいて、BeautifulSoupとDOM操作は非常に重要な要素です。この記事では、BeautifulSoupとDOM操作の基本的な関係性から、具体的な操作手順、応用例までを解説します。

BeautifulSoupとは何か

BeautifulSoupは、Pythonのライブラリの1つであり、HTMLやXMLなどの構造化されたデータを解析するために使用されます。簡単に言うと、Webページから必要な情報を取り出すためのツールです。

DOMとは何か

DOMとは、Document Object Modelの略であり、Webページの構造を表す仕組みです。HTMLやXMLなどのマークアップ言語において、タグや要素、属性などがオブジェクトとして扱われます。DOMを操作することで、Webページの構造を変更したり、特定の要素を取得したりすることができます。

BeautifulSoupとDOM操作の基本的な関係性

BeautifulSoupは、HTMLやXMLなどの構造化されたデータを解析するためのツールであり、DOM操作を行うためのAPIを提供しています。つまり、BeautifulSoupはDOM操作のためのラッパーとしての役割を果たしています。

BeautifulSoupを用いたDOM操作の基本手順

BeautifulSoupを用いたDOM操作の基本的な手順は以下の通りです。

  1. WebページのHTMLデータを取得する。
  2. BeautifulSoupオブジェクトを生成する。
  3. DOM操作を行う。

DOM操作には、要素の取得、属性値の取得、要素の追加・削除などがあります。以下では、それぞれの操作について解説します。

要素の取得

要素の取得には、find()やfind_all()メソッドを使用します。find()メソッドは、指定した要素を1つだけ取得します。find_all()メソッドは、指定した要素を全て取得します。

import requests
from bs4 import BeautifulSoup
# WebページのHTMLデータを取得する
url = "https://example.com"
response = requests.get(url)
html = response.content
# BeautifulSoupオブジェクトを生成する
soup = BeautifulSoup(html, "html.parser")
# title要素を取得する
title = soup.find("title")
# div要素を全て取得する
divs = soup.find_all("div")

属性値の取得

属性値の取得には、get()メソッドを使用します。

import requests
from bs4 import BeautifulSoup
# WebページのHTMLデータを取得する
url = "https://example.com"
response = requests.get(url)
html = response.content
# BeautifulSoupオブジェクトを生成する
soup = BeautifulSoup(html, "html.parser")
# a要素のhref属性を取得する
a = soup.find("a")
href = a.get("href")

要素の追加・削除

要素の追加・削除には、append()やextract()メソッドを使用します。append()メソッドは、指定した要素を子要素として追加します。extract()メソッドは、指定した要素を削除します。

import requests
from bs4 import BeautifulSoup
# WebページのHTMLデータを取得する
url = "https://example.com"
response = requests.get(url)
html = response.content
# BeautifulSoupオブジェクトを生成する
soup = BeautifulSoup(html, "html.parser")
# div要素を追加する
new_div = soup.new_tag("div")
new_div.string = "New div"
soup.body.append(new_div)
# a要素を削除する
a = soup.find("a")
a.extract()

BeautifulSoupによるDOM操作の具体的な例

以下は、BeautifulSoupを用いたDOM操作の具体的な例です。ここでは、ニュースサイトのトップページから、記事タイトルとURLを取得するプログラムを作成します。

import requests
from bs4 import BeautifulSoup
# WebページのHTMLデータを取得する
url = "ニュースサイトのURL"
response = requests.get(url)
html = response.content
# BeautifulSoupオブジェクトを生成する
soup = BeautifulSoup(html, "html.parser")
# 記事タイトルとURLを取得する
for a in soup.find_all("a", class_="newsLink"):
    title = a.text
    url = a.get("href")
    print(title, url)

BeautifulSoupとDOM操作の応用例

以下は、BeautifulSoupとDOM操作を応用したプログラムの例です。ここでは、検索サイトの結果から、サイトのタイトルとURLを取得するプログラムを作成します。

import requests
from bs4 import BeautifulSoup
# WebページのHTMLデータを取得する
url = "検索サイトのURL"
response = requests.get(url)
html = response.content
# BeautifulSoupオブジェクトを生成する
soup = BeautifulSoup(html, "html.parser")
# タイトルとURLを取得する
for div in soup.find_all("div", class_="r"):
    a = div.find("a")
    title = a.text
    url = a.get("href")
    print(title, url)

まとめ

この記事では、BeautifulSoupとDOM操作の基本的な関係性から、具体的な操作手順、応用例までを解説しました。Webスクレイピングにおいて、BeautifulSoupとDOM操作は非常に重要な要素であり、今後も更に注目されることでしょう。