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

Python/Selenium如何实现衬衫与对应颜色的关联列表展示?

解决Python/Selenium中衬衫与对应颜色关联展示的问题

你现在的问题在于代码是先把所有衬衫名称一次性打印完,再打印所有颜色,导致两者是完全分开的独立列表。要让它们关联起来,核心思路是找到每个商品的独立容器,然后在每个容器内分别提取衬衫名称和对应的颜色,这样就能保证两者一一对应啦。

先说说原始代码的问题:你用两个全局XPath分别抓取所有衬衫和所有颜色,这就导致两者的顺序即便逻辑上对应,但输出是完全割裂的。我们可以调整思路,先定位每个商品的父元素(也就是页面里的<article>标签,你的原始XPath里也能看到每个商品都在//*[@id="container"]/article下),然后在每个article内部单独查找衬衫名称和颜色。

修改后的代码(单颜色场景)

# 先定位所有商品的容器
items = driver.find_elements_by_xpath('//*[@id="container"]/article')

# 遍历每个商品容器
for item in items:
    # 注意XPath前的`.`:表示在当前元素范围内查找,而非整个文档
    shirt_name = item.find_element_by_xpath('.//div/h1/a').text
    color = item.find_element_by_xpath('.//div/p/a').text
    # 关联打印衬衫和颜色
    print(f"{shirt_name}: {color}")

如果商品有多个颜色的适配版本

如果部分衬衫对应多种颜色,把find_element改成find_elements,再遍历颜色列表即可:

items = driver.find_elements_by_xpath('//*[@id="container"]/article')

for item in items:
    shirt_name = item.find_element_by_xpath('.//div/h1/a').text
    # 抓取当前商品下的所有颜色
    color_elements = item.find_elements_by_xpath('.//div/p/a')
    color_list = [color.text for color in color_elements]
    # 用逗号拼接颜色列表后打印
    print(f"{shirt_name}: {', '.join(color_list)}")

这样输出就会变成每个衬衫名称后面紧跟它对应的颜色,再也不会是两个分开的列表了~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:34:37