【问题标题】:The best way to search string in BeatifulSoup.findAll('a')在 BeautifulSoup.find_All('a') 中搜索字符串的最佳方法
【发布时间】:2011-01-13 20:30:01
【问题描述】:

请大家帮我解决下一个问题。 我需要找到带有一些键(字符串)的链接,然后我使用了下一个代码:

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

【问题讨论】:

    标签: python beautifulsoup


    【解决方案1】:

    链接不是字符串。使用 link['href'] 代替 for 循环内的链接或使用 str(link) 强制转换为字符串

    【讨论】:

    • 谢谢你,那是以前,但我似乎很愚蠢,忘记了。但是什么类型的对象有链接,没有 ['href']?
    • 打印链接.__class__
    【解决方案2】:

    findAll() 带正则表达式:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-22
      • 2014-03-23
      • 2023-04-10
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      相关资源
      最近更新 更多