PythonのBeautifulSoupとRegexを使ってWebスクレイピングを行う方法について解説します。
BeautifulSoupとRegexの基本
BeautifulSoupはHTMLやXMLの解析を行うPythonライブラリで、Webスクレイピングによく使用されます。また、Regex(正規表現)は文字列のパターンマッチングに使用され、BeautifulSoupと組み合わせることで特定のタグや属性を効率的に抽出することができます。
例えば、以下のようにBeautifulSoupとRegexを組み合わせてHTMLから特定のタグを抽出することができます。
import re
from bs4 import BeautifulSoup
# HTMLを解析
soup = BeautifulSoup(html, 'html.parser')
# aタグとdivタグを抽出
tags = soup.find_all(re.compile("(a|div)"))
このコードは、HTMLからaタグとdivタグを抽出します。
実践的な例
さらに具体的な例として、以下のコードはWebページから特定の情報を抽出するスクレイピングを行います。
import re
import requests
from bs4 import BeautifulSoup
# ソースを取得
url = 'https://example.com'
r = requests.get(url)
t = r.text.replace('\\n','').replace('\\t','')
s = BeautifulSoup(t,'html.parser')
# タイトルを取得
title = s.title.text
# プレイヤー名とスコア一覧取得
sts = s.select('.songTop.pp')
scs = s.select('.scoreTop.ppValue')
result = []
for st, sc in zip(sts, scs):
result.append((st.text, sc.text))
このコードは、指定したURLのWebページからタイトルと、特定のクラスを持つ要素のテキストを抽出します。
以上、PythonのBeautifulSoupとRegexを使ったWebスクレイピングの基本について解説しました。これらのツールを使うことで、Webからの情報収集を効率的に行うことができます。