Найти конкретную ссылку w/beautifulsoup

Привет, я не могу понять, как найти ссылки, которые начинаются с определенного текста для моей жизни. findall ('a') работает отлично, но это слишком много. Я просто хочу составить список всех ссылок, которые начинаются с http://www.nhl.com/ice/boxscore.htm?id=

Кто-нибудь может мне помочь?

Большое спасибо

Ответ 1

Сначала настройте тестовый документ и откройте парсер с помощью BeautifulSoup:

>>> from BeautifulSoup import BeautifulSoup
>>> doc = '<html><body><div><a href="something">yep</a></div><div><a href="http://www.nhl.com/ice/boxscore.htm?id=3">somelink</a></div><a href="http://www.nhl.com/ice/boxscore.htm?id=7">another</a></body></html>'
>>> soup = BeautifulSoup(doc)
>>> print soup.prettify()
<html>
 <body>
  <div>
   <a href="something">
    yep
   </a>
  </div>
  <div>
   <a href="http://www.nhl.com/ice/boxscore.htm?id=3">
    somelink
   </a>
  </div>
  <a href="http://www.nhl.com/ice/boxscore.htm?id=7">
   another
  </a>
 </body>
</html>

Затем мы можем искать все теги <a> с атрибутом href, начиная с http://www.nhl.com/ice/boxscore.htm?id=. Вы можете использовать для него регулярное выражение:

>>> import re
>>> soup.findAll('a', href=re.compile('^http://www.nhl.com/ice/boxscore.htm\?id='))
[<a href="http://www.nhl.com/ice/boxscore.htm?id=3">somelink</a>, <a href="http://www.nhl.com/ice/boxscore.htm?id=7">another</a>]

Ответ 2

Вам может не понадобиться BeautifulSoup, поскольку ваш поиск специфичен

>>> import re
>>> links = re.findall("http:\/\/www\.nhl\.com\/ice\/boxscore\.htm\?id=.+", str(doc))