Webスクレイピングとは、Web上に公開されているデータを自動的に収集することです。例えば、ある商品の価格を定期的に取得し、競合他社と比較することで競争力を高めたり、SNSの投稿内容を分析することで、商品やサービスの改善点を把握することができます。
BeautifulSoupは、PythonでWebスクレイピングを行う際に最もよく使われるライブラリの1つです。HTMLやXMLからデータを抽出することができ、簡単にスクレイピングを行うことができます。
ClassとIDとは何か
WebページのHTMLタグには、ClassとIDという2つの属性があります。Classは同じスタイルを適用するためにグループ化された要素を、IDは個別の要素を指定するために使用されます。
<div class="box">This is a box</div> <div id="header">This is a header</div>
上記の例では、class属性を持つdivタグが「box」という名前のグループに属しています。一方、id属性を持つdivタグは「header」という名前で個別に指定されています。
BeautifulSoupでClassとIDを用いたDiv要素のスクレイピング方法
BeautifulSoupを用いてClassとIDを用いたDiv要素のスクレイピングを行うには、以下のようにコードを記述します。
import requests
from bs4 import BeautifulSoup
url = "http://example.com"
res = requests.get(url)
soup = BeautifulSoup(res.content, "html.parser")
# classがexampleのdiv要素を取得する
div_list = soup.select(".example")
# idがheaderのdiv要素を取得する
div_element = soup.select_one("#header")
上記の例では、requestsモジュールを用いて指定したURLからHTMLを取得し、BeautifulSoupを用いて解析しています。そして、selectメソッドを用いてclassがexampleのdiv要素を、select_oneメソッドを用いてidがheaderのdiv要素をそれぞれ取得しています。
実践例:BeautifulSoupでClassとIDを用いたDiv要素のスクレイピング
以下は、ニュースサイトから最新の記事タイトルを取得するプログラムです。
import requests
from bs4 import BeautifulSoup
url = "ニュースサイトのURL"
res = requests.get(url)
soup = BeautifulSoup(res.content, "html.parser")
# classがnewsFeed__titleのdiv要素を取得する
titles = soup.select(".newsFeed__title")
# 記事タイトルを表示する
for title in titles:
print(title.text)
上記のプログラムでは、requestsモジュールを用いてニュースサイトのトップページからHTMLを取得し、BeautifulSoupを用いて解析しています。そして、selectメソッドを用いてclassがnewsFeed__titleのdiv要素を取得し、記事タイトルを表示しています。
注意点:BeautifulSoupでClassとIDを用いたDiv要素のスクレイピングを行う上での注意点
BeautifulSoupでClassとIDを用いたDiv要素のスクレイピングを行う際には、以下の注意点に注意してください。
- Webサイトの利用規約に従ってスクレイピングを行うこと
- スクレイピングによってサーバーに負荷がかかる場合は、適切な時間を空けてリクエストを送信すること
- スクレイピング対象のWebページのHTML構造が変更される可能性があるため、定期的に確認を行い、必要に応じてプログラムを修正すること
まとめ
BeautifulSoupは、PythonでWebスクレイピングを行う際に最もよく使われるライブラリの1つであり、HTMLやXMLからデータを抽出することができます。ClassとIDは、WebページのHTMLタグにある属性で、それぞれグループ化された要素や個別の要素を指定するために用いられます。BeautifulSoupを用いてClassとIDを用いたDiv要素のスクレイピングを行う際には、適切な利用規約の下、スクレイピングを行い、定期的にプログラムを修正することが重要です。


![[Python]JSONを読み込む(ループ ネスト 文字列 配列 エラー)](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/11/1-163.jpg)

![[Python]繰り返し処理(for文、while文の基本的な使い方)](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2022/06/記事2_2.png)
![[Python]int型に変換!splitメソッドで文字列を最初だけ分割する](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/12/1-1330.jpg)