如果你想所有的評論,你可以使用findAll
與可呼叫:
>>> from bs4 import BeautifulSoup, Comment
>>>
>>> s = """
... <p>header</p>
... <!-- why -->
... www.test1.com
... www.test2.org
... <!-- why not -->
... <p>tail</p>
... """
>>>
>>> soup = BeautifulSoup(s)
>>> comments = soup.findAll(text = lambda text: isinstance(text, Comment))
>>>
>>> comments
[u' why ', u' why not ']
一旦你得到了他們,你可以使用慣用的招數走動:
>>> comments[0].next
u'\nwww.test1.com\nwww.test2.org\n'
>>> 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 ']
來源
2012-10-08 00:35:30
DSM
舉一個真實的例子,這將有助於每個人。 –