在BeautifulSoup.findAll('a')中搜索字符串的最佳方法

时间:2011-01-13 20:30:02

标签: python beautifulsoup

伙计们请帮我解决下一个问题。 我需要找到一些键(字符串)的链接,我使用下一个代码:

import  urllib2, re
from BeautifulSoup import BeautifulSoup 

url = 'http://5pd.ru'
page = urllib2.urlopen(url)
soup = BeautifulSoup(page)
print soup.findAll('a')
for link in soup.findAll('a'): 
    if '5' in link:
            print link

它不会返回任何内容

但是在这个例子中:

site_list = ['http://extra1.ru/', 'http://5pd.ru/', 'http://google.ru/', 'http://fun.ru/']
for i in site_list:
    if '5' in i: 
        print i

它返回了正确的链接

我只是想了解验证链接是否包含我的字符串的最正确方法。 也许我应该用soup.findAll('a')制作smth?

2 个答案:

答案 0 :(得分:2)

链接不是字符串。使用链接['href']而不是链接里面的循环或强制转换为字符串与str(链接)

答案 1 :(得分:2)

使用正则表达式的findAll():

for link in soup.findAll('a', href=re.compile('5')):
    print link['href']