Selenium获取Steam市场皮肤Float值与价格信息的技术问询
Selenium获取Steam市场皮肤Float值与价格信息的技术问询
看起来你已经成功定位到Steam市场的皮肤列表元素啦,但还不知道怎么从这些market_listing_row元素里提取需要的Float值和价格对吧?我来帮你一步步搞定这个问题~
核心思路拆解
你拿到的s是一个WebElement列表,每个元素对应一个皮肤的商品行。我们需要遍历这个列表,对每一行分别提取价格和由CSFloat插件注入的Float值:
1. 提取Steam原生价格
每个商品行里的价格通常在带有market_listing_price_with_fee类的元素里(或者market_listing_price,可根据页面实际结构调整),可以通过相对定位在当前行元素下查找这个子元素,再用.text获取价格文本。
2. 提取CSFloat插件提供的Float值
因为你加载了CSFloat插件,它会在每个商品行里添加Float相关的元素,一般这个元素的class是csfloat-float-value(你可以通过浏览器开发者工具确认下具体的class名),同样用相对定位在当前行下查找这个元素,提取文本即可。
修改后的代码示例
from selenium import webdriver from selenium.webdriver.chrome.options import Options as ChromeOptions from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC chrome_options = ChromeOptions() chrome_options.page_load_strategy = 'normal' chrome_options.add_extension('cs2float.crx') driver = webdriver.Chrome(options=chrome_options) driver.get('https://steamcommunity.com/market/listings/730/AWP%20%7C%20Safari%20Mesh%20%28Field-Tested%29?filter=') # 显式等待列表加载完成,避免元素未加载导致报错 wait = WebDriverWait(driver, 10) skin_rows = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, "market_listing_row"))) # 遍历每个皮肤行,提取信息 for row in skin_rows: # 提取价格 try: price_element = row.find_element(By.CLASS_NAME, "market_listing_price_with_fee") price = price_element.text.strip() except: price = "价格获取失败" # 提取Float值 try: float_element = row.find_element(By.CLASS_NAME, "csfloat-float-value") float_value = float_element.text.strip() except: float_value = "Float值获取失败" print(f"皮肤价格: {price}, Float值: {float_value}") driver.quit()
注意事项
- 如果发现Float值提取失败,建议打开浏览器开发者工具,查看CSFloat插件注入的元素具体class名,替换代码里的
csfloat-float-value即可。 - 加入显式等待
WebDriverWait是为了确保页面元素完全加载,避免因网络延迟导致的元素定位失败问题。
备注:内容来源于stack exchange,提问作者Rassoha
相关产品推荐
相关产品推荐

