Python
1soup.find_all('span', class_="test") 2
testクラスの直下のaタグを取得するというのをこのコードにつなげて書くにはどう書いたらいいでしょうか?
ぜひ教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
~.find('a')
でよいと思います。
Python
1from bs4 import BeautifulSoup 2doc = """<html><head><title>Page title</title></head><body> 3<span class='test'><a href='hoge'>ほげ</a></span> 4<p><span class='test'><a href='fuga'><b>ふが</b></a></span> 5</body></html>""" 6soup = BeautifulSoup(doc,'html.parser') 7ss = soup.find_all('span', class_='test') 8for s in ss: 9 a = s.find('a') 10 print(a.text) 11 print(a.attrs['href'])
投稿2018/12/09 23:21
編集2018/12/09 23:25総合スコア38352
0
ベストアンサー
can110さんのfindという方法とselect(CSSセレクタ)で書くこともできます。
http://www.htmq.com/csskihon/005.shtml
python
1for i in soup.select('span.test > a'): 2 3 # テキスト取得、strip=Trueで前後の空白文字を除去 4 i.get_text(strip=True) 5 6 # URL抽出 7 i.get('href')
CSSセレクタ(select_one・select)の方が簡単なのですが
tableのthとtdを両方取得する場合はselectでは失敗するためfind_allを使ったりと
find・find_allの方が細かく設定できるので両方覚えておくといいです。
find_all
http://kondou.com/BS4/#find-all
select
http://kondou.com/BS4/#id37
投稿2018/12/10 00:14
総合スコア1286
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。