BeautifulSoup如何定位同一父标签下对应分类的商品价格标签
BeautifulSoup 同分类下关联价格提取方案
你当前遍历到的class="category"分类节点,和对应价格节点是同级元素,共同嵌套在最外层class="products_results"的父section标签下,直接在当前分类节点的父容器范围内检索价格标签即可,不会误抓其他分类的价格数据。
推荐实现代码
for category_node in soup.find_all(class_='category'): # 加strip()清除文本首尾的换行、缩进空格,避免因隐藏字符导致分类匹配失败 category_name = category_node.text.strip() if category_name == 'Clothes': # 定位当前分类所属的父容器 parent_section = category_node.parent # 仅在父容器范围内查找价格标签,不会跨分类检索 price_tag = parent_section.find(class_='price') price = price_tag.text.strip() # 若需要数值格式可自行转换:price = float(price)
备选方案(容错率更低)
如果页面结构固定,分类节点和对应价格节点之间的无关节点不会动态增减,也可以直接查找当前分类节点后续的第一个价格标签:
price = category_node.find_next(class_='price').text.strip()
注意:这种写法如果后续HTML结构调整,中间插入了其他分类的价格标签,会出现匹配错误,优先推荐父容器范围查找的写法。
内容的提问来源于stack exchange,提问作者small_potato
相关产品推荐
相关产品推荐

