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

0 投票
2 回答
1533 浏览
提问于 2025-04-16 09:55

大家帮我解决一个问题。
我需要找到包含某个关键词(字符串)的链接,我用了下面的代码:

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') 做点什么?

2 个回答

2

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

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

链接不是字符串。在循环里面,使用 link['href'] 来获取链接,或者可以用 str(link) 强制把它转换成字符串。

撰写回答