gpt4 book ai didi

python - BeautifulSoup 和 Python Lambda

转载 作者:太空狗 更新时间:2023-10-30 01:11:28 30 4
gpt4 key购买 nike

我很难理解这段代码。

我想提取 HTML使用 BeautifulSoup 发表评论和 Python3 .

给定:

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询问是否 textComment 的实例并返回一个 bool 值。
  • 我有点明白lambda .需要 text作为参数并评估 isinstance表达。
  • 你可以传递一个函数给find_all

这是我不明白的:

  • 什么是 texttext=
  • 什么是 textlambda text
  • html 的论据是什么?传递到 lambda text
  • soup.text返回 I don't grok it .为什么是lambda text路过<!-- Python is awesome -->作为论点?

最佳答案

总结

.find_all()遍历每一行并尝试匹配 text='<our_text> .而不是实际的字符串(就像下面的例子) '<our_text>'是一个基本上有条件的 lambda 函数。

我将解释这个问题的每个部分。

text=

html = '''
<!--Python is awesome-->
<!--Lambda is confusing-->
<title>I don't grok it</title>
'''

soup = BeautifulSoup(html, 'html.parser')

print(soup.find_all(text='Python is awesome'))

输出:

['Python is awesome']

在这里text=只是一个参数(即参数),我们可以在其中传递正则表达式或另一个函数变量'string' .在我们的例子中,它恰好是一个 lambda。接下来我们将解释 lambda 的作用。

Lambda

这个 lambda 函数接受 text变量作为输入。

我们使用 .find_all 自动将每一行的文本输入到 lambda 函数中

lambda text: isinstance(text, Comment) 

还有 isinstance检查第一个参数。 textComment它返回 TrueFalse。示例:some_var = 'Ey man'然后我做isisntance(some_var, str) -> 正确这是一个字符串 (str)

接下来,我们将这两者结合起来。

soup.find_all(text= lambda text: isinstance(text, Comment))

  1. soup.find_all - 遍历每一行 <--Python is awesome.. , <--Lambda.. <title>I..

  2. 我们在 .find_all(<the_condition>) 内有一个条件并保留满足该条件的行

  3. 我们的情况是,

    3.1。首先,我们不会只检查清晰、纯英文文本和内部标签,和/或存在的任何字符串。那是 text=

    3.2。文本也有一个条件,它不接受任何文本,只有当 lambda 函数 返回 True 时,即满足 lambda 的条件。

    3.3。 lambda 条件 是它必须是 Comment 的一个实例意味着只有当它是一个评论时它才会返回True

仅当所有这些条件都满足时,我们才会获取该并存储它。

关于python - BeautifulSoup 和 Python Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003003/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com