如果您想要所有注释,可以将findAll与callable一起使用:
>>> from bs4 import BeautifulSoup, Comment
>>>
>>> s = """
...
header
...
... www.test1.com
... www.test2.org
...
...
tail
... """
>>>
>>> soup = BeautifulSoup(s)
>>> comments = soup.findAll(text = lambda text: isinstance(text, Comment))
>>>
>>> comments
[u' why ', u' why not ']
一旦你得到它们,你可以使用通常的技巧来移动:
>>> comments[0].next
u'
www.test1.com
www.test2.org
'
>>> comments[0].next.split()
[u'www.test1.com', u'www.test2.org']
根据页面的实际情况,您可能需要稍微调整一下,然后您必须选择所需的注释,但这应该可以帮助您入门.
编辑:
如果你真的只想要看起来像某些特定文本的那些,你可以做类似的事情
>>> comments = soup.findAll(text = lambda text: isinstance(text, Comment) and text.strip() == 'why')
>>> comments
[u' why ']
或者您可以使用列表解析在事后过滤它们:
>>> [c for c in comments if c.strip().startswith("why")]
[u' why ', u' why not ']