web-dev-qa-db-ja.com

hrefを取得しているBeautifulSoup

以下のスープがあります。

<a href="some_url">next</a>
<span class="class">...</span>

これから、私はhref、"some_url"を抽出したいです。

タグが1つしかない場合でも可能ですが、ここでは2つのタグがあります。テキスト'next'を取得することもできますが、それは私が望むものではありません。

また、どこかの例でAPIの良い説明があります。私は 標準的なドキュメント を使っていますが、もう少し体系的なものを探しています。

163
dkgirl

次のように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)
253
Mark Longair