見出し画像

特定のタグを抽出する

今日は、『つくってマスターPython』の第5章での学びをアウトプットします。

全体の中から特定の要素だけを抽出し処理したい場合には、「find_all」というメソッドを使います。

<<BeautifulSoup>>.find_all( タグ  )

find_allを使えば、ドキュメント内にある特定のタグをすべてまとめて取り出すことができます。たとえば、find_all(‘p’)とすれば、<p>タグのオブジェクトをリストとしてまとめて取り出せます。

Tagクラス

パースされたタグは、それぞれ「Tag」というクラスのインスタンスとしてBeautifulSoup内に組み込まれています。
Tagには、いくつかのデータ属性が用意されています。タグ名は、「name」という値として用意されています。例えば、<p>タグのTagインスタンスならば、nameの値は’p’となっています。タグの属性は、Tagインスタンスそのものを辞書のように扱うことで取り出せます。
hogeというオブジェクトにあるid属性の値
↓
hoge[‘id’]
このように、[]で属性の名前を指定すれば値を取り出せます。また、開始タグと終了タグの間にテキストを記述するタイプのものでは、「get_text」という引数なしのメソッドでそのテキスト(文字列)を取り出すことができます。
hoge.get_text()

Webサイトにアクセスし、そのページにある<a>タグのリンク先アドレスを(href属性)を出力してみます。

import requests
from bs4 import BeautifulSoup

address = 'https://www.tuyano.com/index2?id=505001'
resp = requests.get(address)
data = resp.text

# BeautifulSoupオブジェクトの作成
soup = BeautifulSoup(data, 'lxml')
for link in soup.find_all('a'):
   try:
       print(link['href'])
   except KeyError:
       print('*** no href ***')

サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪