使用Python和Selenium实现亚马逊搜索结果按价格升序显示的问题
解决亚马逊搜索结果产品与价格关联并按价格升序排序的问题
核心思路
把每个产品的名称和对应价格封装成键值对结构(字典),再将所有字典存入统一列表,最后基于价格字段排序,即可实现关联后的有序输出。
具体实现步骤
构建关联字典列表
遍历你已获取的所有产品原始列表,从每个列表中提取产品名称和转换后的价格,存入字典后添加到统一列表中。
(根据你提供的列表结构,产品名称是索引为2的元素,价格是索引为4的元素去除$后转成的整数)按价格升序排序
使用Python内置的sorted()函数,通过key参数指定按字典中的price字段排序,默认即为升序。输出关联结果
遍历排序后的列表,逐个输出产品名称和对应价格。
代码示例
# 假设all_products_raw是你已获取的所有产品原始列表集合 all_products_raw = [ ['+2 colours/patterns', 'Sponsored', '2022 Apple iPhone SE (128 GB) - Starlight (3rd Generation)', '3', '$799', '00', 'FREE Delivery by Amazon', 'Temporarily out of stock.'], ['Sponsored', 'Samsung Galaxy A54 5G', '4', '$599', '99', 'FREE Delivery'], # 更多产品原始列表... ] # 转换为带关联信息的字典列表 products_with_price = [] for raw_item in all_products_raw: # 提取产品名称(做边界判断避免索引越界) product_name = raw_item[2] if len(raw_item) > 2 else '未知产品' # 提取并转换价格(按你的现有逻辑) price_str = raw_item[4].lstrip('$') if len(raw_item) > 4 else '0' price = int(price_str) # 若需要合并分的部分(比如$599和99转为59999),可替换为: # price = int(price_str + raw_item[5]) if len(raw_item) >5 else int(price_str) products_with_price.append({'name': product_name, 'price': price}) # 按价格升序排序 sorted_products = sorted(products_with_price, key=lambda x: x['price']) # 输出排序后的关联结果 for item in sorted_products: print(f"产品: {item['name']} | 价格: ${item['price']}")
额外提示
如果部分产品的原始列表结构不一致(比如无Sponsored标签导致索引偏移),可以通过特征匹配提取信息:
- 遍历列表找包含
$的元素作为价格源 - 筛选长度较长、包含品牌/型号关键词的元素作为产品名称
内容的提问来源于stack exchange,提问作者pawanamigo
相关产品推荐
相关产品推荐

