CodeGym /コース /Python SELF JA /BeautifulSoupを使ったHTML要素からのテキストと属性の抽出

BeautifulSoupを使ったHTML要素からのテキストと属性の抽出

Python SELF JA
レベル 32 , レッスン 0
使用可能

1. テキスト抽出メソッドの紹介

今日はHTML要素から貴重なテキストデータや属性を抽出する方法を学ぶよ。 BeautifulSoupを使えば、コードとのやり取りは秋の果樹園を歩きながら、リンゴを摘むようなものだね。 学んだ成果を収穫する準備はできた? それじゃ、始めよう!

HTML要素からのテキスト抽出メソッドは、私たちのリストの中で最優先。 テキストを抽出し始める前に、まずページをロードしよう。

Python

import requests
from bs4 import BeautifulSoup

# HTMLコードをロード
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

これでHTMLドキュメントのツリー構造を含むsoupオブジェクトが手に入ったね。 何かタグ要素、例えば見出しからテキストを抽出してみよう。

メソッド.textget_text()

.textプロパティとその類似メソッドget_text()は、 要素(およびその中に含まれるすべての要素)のテキスト内容を取得することができるよ。

Python

# 最初に見つかったh1見出しからテキストを抽出
h1_tag = soup.find('h1')
print(h1_tag.text)  # または h1_tag.get_text()

自分で試してみて:他の要素を検索メソッドを使って見つけ出し、そのテキストを抽出してみよう。 情報がどれだけ手に入るか驚くはず!

2. 属性値の抽出

テキストはテキストでも、時には重要なデータは属性に隠されていることがある。 例えばリンクのアドレスや画像のURLを知りたい場合にはどうする? (理由は聞かないでね。もしかしたら猫の画像コレクションが欲しいのかも?)

属性値を抽出する

例えば、リンク要素 <a href="https://example.com">Example</a>があったとしたら、 hrefの値をどうやって取得する? 簡単だよ。

Python

# リンクを抽出
a_tag = soup.find('a')
link = a_tag['href']
print("リンク:", link)

このコードはhref属性の値を抽出するよ。 他の役立つ属性も同様の方法で抽出することができるんだ。

画像のURLを引き出そう

画像のURLの抽出も同じくらい簡単。 <img src="image.jpg" alt="猫ちゃん">の場合を見てみよう。

Python

# 画像のURLを抽出
img_tag = soup.find('img')
image_url = img_tag['src']
print("画像のURL:", image_url)

BeautifulSoupを使うメリットは、 HTML構造がどのように動作するか考えることなく、 簡単にデータを見つけて抽出できる点なんだ。

3. テキストと属性抽出の例

例の時間だね。少しだけ難しいタスクに挑戦してみよう: ページ上の全てのリンクと、それに関連する<a>タグ内のテキストを抽出するんだ。

例:テキスト付きで全てのリンクを抽出

Python

# 全てのaタグを見つける
a_tags = soup.find_all('a')

# リンクとテキストを出力
for a_tag in a_tags:
    link = a_tag['href']
    text = a_tag.get_text()
    print(f"テキスト: {text}, リンク: {link}")

見ての通り、find_allメソッドは検索条件に一致する全ての要素を便利に見つけてくれる。 また、forループを使ってそれぞれを辿ることができるよ。

4. エラー処理

エラー処理を忘れないようにね。時々、HTML構造が想定通りではなかったり、 要素が期待される属性を持っていないかもしれない。 こういった場合にコードが「クラッシュ」しないようにしておこう。

Python

# 属性抽出時のエラー処理例
try:
    link = a_tag['href']
except KeyError:
    link = None
    print("属性hrefが見つかりませんでした!")

これによりスクリプトがより頑丈になり、1つの小さなエラーのために停止することがなくなるよ。

5. 実践的な応用

2019年、あるロシアの起業家は、自分の会社がデータスクレイピングを専門として、 年間2000万ルーブルの売上を達成した話をシェアしたよ。 自動化された情報収集は競争を制限するわけではなく、 むしろ市場への適応を助けると彼は言っていたんだ。

例えば、あるクライアントは毎日供給元サイトから在庫を収集するパーサーを依頼したんだ。 これにより、自身のオンラインストアの品揃えや価格を迅速に更新できるようになったよ。 この起業家も指摘していたけど、一部のサイトがスクレイピングを難しくしようとする努力に対しても、 現代の技術はこれらの障害を効果的に回避し、 ビジネスが戦略的な意思決定に必要なデータにアクセスできるようにしているんだ。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION