使用python在HTML代码中查找特定注释

使用python在HTML代码中查找特定注释,python,Python,我在python中找不到特定的注释,例如。 我的主要原因是找到2个具体评论内的所有链接。类似于解析器的东西。 我用Beautifulsoup试过这个: import urllib over=urlopen("www.gamespot.com").read() soup = BeautifulSoup(over) print soup.find("<!--why-->") 编辑:在这两条评论之间,可能存在其他内容,如标签。 我需要存储所有的链接。如果你想要所有的评论,你可以使用fin

我在python中找不到特定的注释,例如
。 我的主要原因是找到2个具体评论内的所有链接。类似于解析器的东西。 我用
Beautifulsoup
试过这个:

import urllib
over=urlopen("www.gamespot.com").read()
soup = BeautifulSoup(over)
print soup.find("<!--why-->")
编辑:在这两条评论之间,可能存在其他内容,如标签。


我需要存储所有的链接。

如果你想要所有的评论,你可以使用
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 = 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 ']

举一个真实的例子,这将帮助每个人。很好的解决方案!我没有意识到我必须导入
注释
,因此无法使其工作。源代码可能有很多注释块。我只需要搜索那些以“为什么”开头的。这是这样工作的吗?@georgemano:我已经编辑过了。阅读Python教程可能值得一读——有很多方法可以完成简洁的事情,一旦你了解了它们,这些方法很容易,但很难猜测。@georgemano:你现在问了三个不同的问题,三个答案略有不同。恕我直言,这不是获得帮助的最佳方式。我的目标不是让你受苦或给你带来麻烦。我的目标是学习我不能理解的东西。
>>> 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 ']