0

我正在学习 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
4

1 回答 1

1
  • 找到第一个tdrow.find('td')改为使用;它将返回第一场比赛
  • 再次查找 child a.find('a')用于查找第一个。
  • 元素的行为类似于 python dict,使用项目访问来获取元素属性,例如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'])
于 2013-01-10T09:11:07.000 回答