Привет, я не могу понять, как найти ссылки, которые начинаются с определенного текста для моей жизни. findall ('a') работает нормально, но это слишком много. Я просто хочу сделать список всех ссылок, которые начинаются с http://www.nhl.com/ice/boxscore.htm?id=
Кто-нибудь может мне помочь?
Большое спасибо
Сначала настройте тестовый документ и откройте парсер с 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=.Вы можете использовать для этого регулярное выражение:
<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>]
Вам может не понадобиться BeautifulSoup, так как ваш поиск специфичен
>>> import re >>> links = re.findall("http:\/\/www\.nhl\.com\/ice\/boxscore\.htm\?id=.+", str(doc))