在BeautifulSoup.findAll('a')中搜索字符串的最佳方法
大家帮我解决一个问题。
我需要找到包含某个关键词(字符串)的链接,我用了下面的代码:
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) 强制把它转换成字符串。