![見出し画像](https://assets.st-note.com/production/uploads/images/46519273/rectangle_large_type_2_338ffba9ff97cfe236d6f11668bedb49.jpeg?width=1200)
Photo by
satokod
Beautifulsoupのfind_allメソッドの戻り値はtagオブジェクトのリスト
今日は、『独習Python入門』第9章で学んだことのアウトプットです。
サイドバーの「メニュー」のスクレイピング
会社案内の右側にある「メニュー」の項目を1行ずつprint関数で表示する練習問題に取り組みました。
HTMLタグは次のとおりです。
<div class="list-group">
<a href="#" class="list-group-item">トップページ</a><br>
<a href="/company" class="list-group-item">会社案内</a><br>
<a href="/company/greeting" class="list-group-item">代表挨拶</a><br>
<a href="/services/advisory_engineer" class="list-group-item">顧問エンジニアによるITコンサルティング</a><br>
<a href="/services/handy" class="list-group-item">展示会の注文管理サービス Handy</a><br>
<a href="/services/mod99" class="list-group-item">業務システム自動生成フレームワーク MOD99</a><br>
<a href="/category/advisory_engineer_column" class="list-group-item">IT活用虎の巻</a><br>
<a href="/dokushu-python-support" class="list-group-item">独習Python入門サポートページ</a><br>
<a href="/contact" class="list-group-item">お問い合わせ</a>
</div>
3段階に分けて考える
①まずサイドバー全体を囲っているdivタグを抽出
②divタグの中に含まれているaタグすべてを配列で取得
③②で取得した配列を繰り返して、タグの中にあるテキストを取得
①のサイドバー全体を囲っているdivタグを抽出する関数は、Beautifulsoupのfindメソッドを使用します。
②の部分は、find_allメソッドを使用します。find_allメソッドは、指定された基準に一致するTagオブジェクトのリストを戻り値として返します。
③のaタグの中にある文字列は、「.string」を使って取得します。
以下がコードになります。
import urllib.request
from bs4 import BeautifulSoup
req = urllib.request.urlopen('http://quality-start.in/company/')
soup = BeautifulSoup(req, 'html.parser')
# ①サイドバー全体を囲っているdivタグを抽出
side_menu = soup.find("div", class_="list-group")
# ②divタグの中に含まれているaタグすべてを配列で取得する
tag_list = side_menu.find_all("a")
# ②で取得した配列を繰り返して、タグの中にあるテキストを取得
for a_tag in tag_list:
print(a_tag.string)
いいなと思ったら応援しよう!
![在野研究者トシヤ](https://assets.st-note.com/production/uploads/images/68199001/profile_1b4bacf8d5918b8f4e27ae33c1707504.jpg?width=600&crop=1:1,smart)