以下のスープがあります。
<a href="some_url">next</a>
<span class="class">...</span>
これから、私はhref、"some_url"
を抽出したいです。
タグが1つしかない場合でも可能ですが、ここでは2つのタグがあります。テキスト'next'
を取得することもできますが、それは私が望むものではありません。
また、どこかの例でAPIの良い説明があります。私は 標準的なドキュメント を使っていますが、もう少し体系的なものを探しています。
次のようにfind_all
を使用すると、a
属性を持つすべてのhref
要素を検索し、それぞれを印刷することができます。
from BeautifulSoup import BeautifulSoup
html = '''<a href="some_url">next</a>
<span class="class"><a href="another_url">later</a></span>'''
soup = BeautifulSoup(html)
for a in soup.find_all('a', href=True):
print "Found the URL:", a['href']
出力は次のようになります。
Found the URL: some_url
Found the URL: another_url
旧バージョンのBeautifulSoup(バージョン4より前)を使用している場合、このメソッドの名前はfindAll
です。バージョン4では、BeautifulSoupのメソッド名 PEP 8に準拠するように変更されました なので、代わりにfind_all
を使うべきです。
href
を持つallタグが必要な場合は、name
パラメータを省略できます。
href_tags = soup.find_all(href=True)