我有一个接受Beautiful Soup对象soup
的函数。
我还想传递一个变量,告诉它如何处理soup
。现在功能是:
def get_info(soup):
info = soup.findAll('div',{'id':'hideinse'})[0]('a',href=True)
#do stuff
但我想要做的是传递这一行findAll('div',{'id':'hideinse'})[0]('a',href=True)
而不是一串字符串。我希望它不要永远是findAll
等等,所以我想尝试做但不确定是怎么做的:
def get_ifno(soup, parse_line):
info = soup.parse_line
#do stuff
那我该如何传递呢?
答案 0 :(得分:2)
鉴于你想要的复杂性你应该采取一个函数,调用者可以提供:
def get_info(soup, parse_line):
info = parse_line(soup)
get_info(soup, lambda x: x.findAll('div',{'id':'hideinse'})[0]('a',href=True))
答案 1 :(得分:1)
通过传递lambdas,你可以获得最大的灵活性和最少的头痛:
def get_info(callback):
info = callback()
get_info(lambda: soup.findAll('div',{'id':'hideinse'})[0]('a',href=True))