需要 Python 中的网络抓取 lambda 函数的解释

问题描述 投票:0回答:1

我正在用 Python 进行网页抓取,我发现了这个:

products = soup.find_all('li')
products_list = []
for product in products:
    name = product.h2.string
    price = product.find('p', string=lambda s: 'Price' in s).string
    products_list.append((name, price))

我想了解这种情况下的 lambda 函数,非常感谢。

python web-scraping beautifulsoup lambda
1个回答
0
投票

您正在创建一个 lambda(匿名)函数,它将

s
作为参数,然后检查字符串“Price”是否在
s
中,或者您可以判断
s
是否包含字符串“Price”。它将基于此返回
True
False

此外,您将该函数存储在

string
变量中。因此,您可以通过该变量调用该 lambda 函数:
string(s)

这是一个例子(如果有帮助的话):


>>> # Create lambda function and store inside `string`
>>> string = lambda s: "Price" in s
>>> # Check `string` indeed a lambda function
>>> string
<function <lambda> at 0x7f4c0afa1630>
>>>
>>> # Call the lambda function with an argument
>>> # Inside lambda function, now, `s = "Hello, World"` !
>>> # It will check this: `"Price" in s`, it's not:
>>> string("Hello, World")
False
>>> # Now, `s = "What is the price of milk?"`
>>> # "Price" and "price" are not same !
>>> string("What is the price of milk?")
False
>>> string("Price of milk is $69.")
True

© www.soinside.com 2019 - 2024. All rights reserved.