我正在尝试抓取一个有鞋子的网站。每个鞋码都有一个唯一的"变体"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"]
的内容会导致语法错误。