将子href解压缩到BeautifulSoup列表

时间:2013-01-10 09:04:06

标签: python beautifulsoup href urllib2

我正在学习python并使用BeautifulSoup来抓取一些网页。我要做的是找到第一个'td'的子'a',提取href并将其添加到列表中。如何以及在何处将href添加到单元格文本中?

import urllib2

from BeautifulSoup import BeautifulSoup

def listify(table):
    """Convert an html table to a nested list""" 
    result = []
    rows = table.findAll('tr')
    for row in rows:
        result.append([])
        cols = row.findAll('td')
        for col in cols:
            strings = [_string.encode('utf8') for _string in col.findAll(text=True)]
            text = ''.join(strings)
            result[-1].append(text)
    return result

1 个答案:

答案 0 :(得分:1)

  • 找到第一个td:改用row.find('td');它将返回第一场比赛
  • 再次找到孩子a,使用.find('a')查找第一个。
  • 元素就像一个python dict,使用item访问来获取href等元素属性。

一起,这使得:

cell = row.find('td')
link = cell.find('a') if cell else None
if link is not None and 'href' in link:
    result[-1].append(link['href'])