如何从同一级别的 2 次点击中获得多种产品变体?

How to get multiple variation of product from 2 click with same level?

我的网站上有产品集,有 2 种颜色和 6 种变化 -> 总共 12 种产品。如何在 'color' 单击与 'variation' 单击同一级别时获取所有信息?!非常感谢

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import time, re
import requests
import pandas as pd
from bs4 import BeautifulSoup
PATH = "C:/Users/aston/Documents/playground_python/chromedriver.exe"
driver = webdriver.Chrome(PATH)
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0'}
test_url = 'https://moho.com.vn/products/bo-ban-an-go-cao-su-tu-nhien-moho-vline-601'  
test = BeautifulSoup(requests.get(test_url, headers=headers).content, 'html.parser')
btn_count = []
for btn_cnt in test.select('.select-swap > div'):
    btn_cnt = btn_cnt['data-value'].count('class')
    btn_count.append(btn_cnt)
vari = len(btn_count)
xpath = []
for b in range(1,vari):
    btn_path = '''//div[@class="select-swatch clearfix"]/div/div/div[''' + str(b) + ''']/label'''
    print(btn_path)
    xpath.append(btn_path)
xpath.remove('//div[@class="select-swatch clearfix"]/div/div/div[7]/label')
for i in xpath:
    driver.get('https://moho.com.vn/products/bo-ban-an-go-cao-su-tu-nhien-moho-vline-601')
    time.sleep(1)
    driver.find_element_by_xpath(i).click() 
    time.sleep(1)
    sku = driver.find_element_by_xpath('.//span[@id="pro_sku"]').text
    price = driver.find_element_by_xpath('.//span[@class="pro-price"]').text
    print({"sku": "price"})

首先,我计算并获得了所有 12 个产品变体的 xpath。其次,通过每个 xpath,我得到每个产品的 sku 和价格。 目前我只得到这样的df:{SKU:MFDTSVLBR2.N16:6,590,000₫,SKU:MFDTSVLDC4.B16:7,390,000₫,SKU:MFDTSVLBR1DC2.N16:7,190,000₫,SKU:MFDTSVLBR2.N16:0VDSK2LB,0VDSK2LB,0VDSK2TS₫ .N16:5,790,000₫,SKU:MFDTSVLBR1DB1.N16:6,190,000₫}。 df 缺少 1 个自然色产品组变体(SKU:MFDTSVLDC4.N16:7,390,000₫)和 5 个棕色产品组变体。 我想知道如何为 'xpath' 编写代码,它将 select 2 个条件(一个用于颜色,两个用于集合的变化)

我希望这是您要提取的数据。

driver.get("https://moho.com.vn/products/bo-ban-an-go-cao-su-tu-nhien-moho-vline-601")

# Get the Colors available
colors = driver.find_elements(By.XPATH,"//div[@id='variant-swatch-0']//label")
data = []

# Iterate over the colors
for color in colors:
    color.click()
    
    # Get all the 6 options for that color
    options = driver.find_elements(By.XPATH,"//div[@data-option='option2']/div[2]/div")

    # Iterate over the options to extract respective sku and price.
    for option in options:
        option.click()
        sku = driver.find_element(By.XPATH,"//span[@id='pro_sku']").get_attribute("innerText")
        price = driver.find_element(By.XPATH,"//span[@class='pro-price']").get_attribute("innerText")
        print(f"{color.text}: {option.text} - {sku} - {price}")
Màu Tự Nhiên: 4 Ghế Đơn - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Màu Tự Nhiên: 1 Ghế Băng Dài + 2 Ghế Đơn - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Màu Tự Nhiên: 1 Ghế Băng Tựa + 2 Ghế Đơn - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Màu Tự Nhiên: 2 Ghế Băng Tựa - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Màu Tự Nhiên: 2 Ghế Băng Dài - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Màu Tự Nhiên: 1 Ghế Băng Dài + 1 Ghế Băng Tựa - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Nâu: 4 Ghế Đơn - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Nâu: 1 Ghế Băng Dài + 2 Ghế Đơn - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Nâu: 1 Ghế Băng Tựa + 2 Ghế Đơn - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Nâu: 2 Ghế Băng Tựa - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Nâu: 2 Ghế Băng Dài - SKU:MFDTSVLDC4.N16 - 7,390,000₫
Nâu: 1 Ghế Băng Dài + 1 Ghế Băng Tựa - SKU:MFDTSVLDC4.N16 - 7,390,000₫