0

我是 python 新手。有没有办法简化这个:

def getDivs():
    divs = soup.findAll(name = "div", attrs = {"class" : "resultCell"}, recursive = True)
    for div in divs:
        h2 = div.find("h2")
        a = h2.find("a")
        href = a["href"]
        yield (href)

divs = list(getDivs())

我觉得我应该能够创建一个匿名函数而不是 getDivs。类似(伪代码):

divs = 

  [
     divs = soup.findAll(name = "div", attrs = {"class" : "resultCell"}, recursive = True)
     for div in divs:
        h2 = div.find("h2")
        a = h2.find("a")
        href = a["href"]
        yield (href)
  ]

谢谢

4

1 回答 1

3

只需使用列表理解:

divs = [ div.find("h2").find("a")["href"]
           for div in soup.findAll(name = "div",
                                   attrs = {"class" : "resultCell"},
                                   recursive = True) ]

但是使用适当的 XML 解析工具是一个更好的主意。

于 2013-05-09T13:32:06.423 回答