BeautifulSoup получает href

У меня есть следующий суп:

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

Из этого я хочу извлечь href, "some_url"

Я могу сделать это, если у меня есть только один тег, но здесь есть два тега. Я также могу получить текст 'next', но это не то, что я хочу.

Кроме того, есть ли хорошее описание API где-нибудь с примерами. Я использую стандартную документацию, но я ищу что-то более организованное.

Ответ 1

Вы можете использовать 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, вы можете опустить параметр name:

href_tags = soup.find_all(href=True)