You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python BeautifulSoup中find与select_one获取价格结果不一致求助

解决BeautifulSoup select_one无法获取价格的问题

嘿,我看到你在用BeautifulSoup的select_one方法时卡壳了,其实问题出在CSS选择器的语法细节上!

问题根源

你写的select_one('._1vC4OE _2rQ-NK')里,空格在CSS选择器中代表“后代元素”——意思是找_1vC4OE类元素下的_2rQ-NK类子元素,但实际上价格元素是同时拥有这两个类名的单个元素,所以这种写法根本匹配不到目标。

正确的select_one写法

把多个类名用.连接(不要空格),就能精准匹配同时拥有这两个类的元素了。修改后的代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd

r = requests.get('https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&uniqBStoreParam1=val1&wid=11.productCard.PMU_V2')
soup = BeautifulSoup(r.text, 'lxml')
results = soup.select('._31qSD5')

# 加个判断避免索引越界,让代码更健壮
if results:
    result = results[0]
    # 关键修改:用.连接多个类名
    price = result.select_one('._1vC4OE._2rQ-NK').text[1:]
    print(price)
else:
    print("未找到产品卡片元素")

为什么find方法能生效?

你用find('div',{'class':'_1vC4OE _2rQ-NK'})时,BeautifulSoup会自动匹配同时包含这两个类名的元素,逻辑和CSS选择器里.连接多个类的效果一致,所以能成功获取价格。

内容的提问来源于stack exchange,提问作者pythonbeginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:18:33