как узнать цену продукта из разного размера селена python - PullRequest
1 голос
/ 31 марта 2020

Я хочу получить информацию о продукте с этой страницы . Этот продукт имеет три разных размера, и цена изменится, если я выберу другой размер из выпадающего списка. Прямо сейчас мой скребок может очистить только цену по умолчанию после первой загрузки страницы, которая составляет 35 за 1 кг. Как я буду царапать цену за 500г и 250г. вот мой код:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

#argument for incognito Chrome
#argument for incognito Chrome
option = Options()
option.add_argument("--incognito")


browser = webdriver.Chrome(options=option)
browser.get("https://boutique.cafebarista.ca/products/cremone?variant=18033418797121")

product_title = browser.find_element_by_xpath('//h1[@class="product-name"]')
long_description = browser.find_element_by_xpath('//div[@class="product-landing-container"]')
price=browser.find_element_by_xpath('//div[@class="product-btn-price ProductPrice"]')

print(product_title.text,long_description.text,price.text)


browser.quit()

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

С помощью .find_elements_by_css_selector вы можете получить каждый текст, не нажимая сначала на выпадающий список weight, я имею в виду этот селектор:

nav[id="w-dropdown-list-16"] > a > div

И вы также можете нажать на каждый из этих элементов, используя .execute_script

Попробуйте следующий код:

driver.get('https://boutique.cafebarista.ca/products/autentico?variant=18033459331137')
weight_list = driver.find_elements_by_css_selector('nav[id="w-dropdown-list-16"] > a > div')
for weight in weight_list:
    driver.execute_script('arguments[0].click();', weight)
    price = driver.find_element_by_id('ProductPrice').text
    print(weight.get_attribute('innerHTML') +' ' +price)
1 голос
/ 31 марта 2020

Попробуйте приведенное ниже решение

from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver

browser = webdriver.Chrome(executable_path=r"C:\New folder\chromedriver.exe")
browser.maximize_window()
wait = WebDriverWait(browser, 20)

browser.get("https://boutique.cafebarista.ca/products/cremone?variant=18033418797121")

kg_button=browser.find_element_by_xpath("//div[@id='w-dropdown-toggle-16']")
kg_button.click()
list =wait.until(EC.presence_of_all_elements_located((By.XPATH, "//nav[@id='w-dropdown-list-16']//a")))
kg_button.click()
for element in list:
     kg_button.click()
     actionChains = ActionChains(browser)
     actionChains.move_to_element(element).click().perform()

     price = browser.find_element_by_xpath("//div[@id='ProductPrice']")
     print product_title.text
     print element.text
     print price.text


browser.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...