如何仅抓取网页中的商品主价格?解决同class多价格爬取问题
解决主价格与月供价格的区分抓取问题
问题分析
当前代码全局抓取所有price-tag-fraction元素,导致主价格和月供价格混在一起。核心解决思路是先定位单个商品卡片,再在卡片内精准提取主价格——主价格和月供价格属于不同子模块,在商品卡片内有明确层级区分。
修改后的代码
# 获取所有商品卡片容器 product_cards = soup.find_all('div', class_='ui-search-result__content shops__result-content') productos = [] precios = [] count = 0 # 遍历每个商品卡片 for card in product_cards: if count >= 33: break # 提取商品名称 title = card.find('h2', class_='ui-search-item__title shops__item-title').text productos.append(title) # 提取主价格(每个卡片内第一个price-tag-fraction就是主价格) main_price = card.find('span', class_='price-tag-fraction').text precios.append(main_price) count += 1 # 处理价格格式(按需拆分逗号) prices = [item.split(',') for item in precios] print(productos) print(precios)
关键说明
- 按商品卡片遍历:先获取每个商品的独立卡片容器,确保仅处理当前商品的信息,避免跨商品抓取无关价格。
- 精准定位主价格:单个卡片内,主价格是第一个出现的
price-tag-fraction元素;月供价格属于分期付款模块(通常在ui-search-installments类容器内),不会被card.find()选中(该方法只返回第一个匹配项)。 - 修正循环计数问题:原代码中
count +=1写在break之后,导致计数无法递增,修改后将计数放在循环体内,确保正确控制抓取数量。
内容的提问来源于stack exchange,提问作者MATIAS IGNACIO OLIVA ALCAYAGA
相关产品推荐
相关产品推荐

