如何从 Python 请求/美丽汤中的某些文本参数获取特定的 HTML 行



我正在尝试抓取一个有鞋子的网站。每个鞋码都有一个唯一的"变体"ID。我需要弄清楚如何根据我想要的鞋码来获取该 ID。该网站的 HTML 示例是:

<label for="variant_id_104685">43</label>

在此示例中,鞋码为"43",我需要在事先不知道的情况下获得该variant_id_104685段。换句话说,输入将要求大小 43,输出将返回该变体 ID。

我应该怎么做?

您可以通过文本获取label元素,然后提取for属性值:

size = "43"
soup.find(attrs={"for": True}, text=size)["for"]

演示:

In [1]: from bs4 import BeautifulSoup
In [2]: data = '<label for="variant_id_104685">43</label>'
In [3]: soup = BeautifulSoup(data, "html.parser")
In [4]: size = "43"
In [5]: soup.find(attrs={"for": True}, text=size)["for"]
Out[5]: 'variant_id_104685'

请注意,此处的{"for": True}有助于仅考虑定义了for属性的label元素。您通常可以使用关键字参数(如soup.find(attribute_name=True)(更简洁地请求属性的存在,但在这种情况下,for是保留关键字,具有类似soup.find(text=size, for=True)["for"]的内容会导致语法错误。

最新更新