【发布时间】:2018-10-04 19:02:03
【问题描述】:
我很难理解这段代码。
我想使用BeautifulSoup 和Python3 提取HTML cmets。
给定:
html = '''
<!-- Python is awesome -->
<!-- Lambda is confusing -->
<title>I don't grok it</title>
'''
soup = BeautifulSoup(html, 'html.parser')
我搜索了解决方案,大多数人说:
comments = soup.find_all(text= lambda text: isinstance(text, Comment))
在我的情况下会导致:
[' Python is awesome ', ' Lambda is confusing ']
这是我的理解:
-
isinstance询问text是否是Comment的实例并返回一个布尔值。 - 我有点理解
lambda。将text作为参数并计算isinstance表达式。 - 您可以将函数传递给
find_all
这是我不明白的:
-
text=中的text是什么? -
lambda text中的text是什么? - 来自
html的参数被传递到lambda text -
soup.text返回I don't grok it。为什么lambda text将<!-- Python is awesome -->作为参数传递?
【问题讨论】:
-
听起来你真的需要一个基本的 Python 教程,然后详细阅读相关的 beautifulsoup 文档。如果您不具备基本 Python 构造的工作知识,则很难理解这些文档。我告诉你这个是因为在你理解基本概念之前,即使你在这里得到的解释也不会像他们应该的那样帮助你。虽然一头扎进一门学科确实是一种很好的学习方式,但基础知识也很重要。
-
@MadPhysicist 你能澄清一下我需要什么基础知识吗?我认为我对基本的 Python 很擅长。
标签: python python-3.x beautifulsoup