2014-12-24 9 views
1

Я пытаюсь собрать все ссылки на веб-странице, которую я собрал через красивый суп, содержащий /d2l/lp/ouHome/home.d2l?ou=.BeautifulSoup найти ссылки, которые соответствуют критериям

Фактические ссылки будут выглядеть эти:

"http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234567" 
"http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234561" 
"http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234564" 
"http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234562" 
"http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234563" 

ответ

0

Вы можете передать compiled regular expression как href значение аргумента в find_all():

soup.find_all('a', href=re.compile(r'/d2l/lp/ouHome/home\.d2l\?ou=\d+')) 

Демо:

>>> import re 
>>> from bs4 import BeautifulSoup 
>>> 
>>> data = """ 
... <div> 
...  <a href="http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234567">link1</a> 
...  <a href="http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234561">link2</a> 
...  <a href="http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234564">link3</a> 
...  <a href="http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234562">link4</a> 
...  <a href="http://learn.ou.edu/d2l/lp/ouHome/home.d2l?ou=1234563">link5</a> 
... </div> 
... """ 
>>> 
>>> soup = BeautifulSoup(data) 
>>> links = soup.find_all('a', href=re.compile(r'/d2l/lp/ouHome/home\.d2l\?ou=\d+')) 
>>> for link in links: 
...  print link.text 
... 
link1 
link2 
link3 
link4 
link5 
+0

по какой-либо причине, это не работает для меня. Я думаю, что это потому, что ссылки находятся внутри тегов, а теги находятся в нижней части подклассов. –

+0

@JacksonBlankenship ok, то предоставите HTML-код, с которым вы имеете дело, или ссылку на веб-страницу, которую вы разбираете. Благодарю. – alecxe

+0

http://pastebin.com/4AG8NQGW –

Смежные вопросы