2015-07-04 151 views
2

我有一個函數接受Beautiful Soup對象soup將參數傳遞到Python函數

我也想通過它告訴它如何處理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 

所以,我怎麼能傳遞嗎?

回答

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

你或許可以通過傳遞lambda表達式獲得最大的靈活性,頭痛量最少的:

def get_info(callback): 
    info = callback() 

get_info(lambda: soup.findAll('div',{'id':'hideinse'})[0]('a',href=True))