Python Beautiful Soup 参数
我有一段代码,它使用BeautifulSoup从一个页面获取一些文本。
soup= BeautifulSoup(html)
body = soup.find('div' , {'id':'body'})
print body
我想把这个代码做成一个可以重复使用的函数,这个函数可以接收一些html文本和要匹配的标签,像下面这样:
def parse(html, atrs):
soup= BeautifulSoup(html)
body = soup.find(atrs)
return body
但是如果我这样调用:
parse(htmlpage, ('div' , {'id':'body'}")) or like
parse(htmlpage, ['div' , {'id':'body'}"])
我只得到了div元素,body属性似乎被忽略了。
有没有办法解决这个问题呢?
2 个回答
3
我觉得你只需要在这里加一个星号:
body = soup.find(*atrs)
没有这个星号的话,你传递的只是一个参数,这个参数是一个元组:
body = soup.find(('div' , {'id':'body'}))
加上星号后,元组会被展开,这样语句就变成了你想要的样子:
body = soup.find('div' , {'id':'body'})
想了解更多关于使用 *args
这种写法的信息,可以看看 这篇文章,还有相关的 **kwargs
。
8
def parse(html, *atrs):
soup= BeautifulSoup(html)
body = soup.find(*atrs)
return body
parse(htmlpage, 'div', {'id':'body'})
然后: