Как извлечь данные со страницы продукта с помощью selenium python

#python #selenium #selenium-webdriver

Вопрос:

Я новичок в Selenium и пытаюсь просмотреть все ссылки, перейти на страницу продукта и извлечь данные с каждой страницы продукта. Это мой код:

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

driver = webdriver.Chrome(executable_path='chromedriver.exe')

page_url = "https://webscraper.io/test-sites/e-commerce/static/computers/laptops"
driver.get(page_url)
link = driver.find_element_by_xpath("//html/body/div[1]/div[3]/div/div[2]/div/div[1]/div/div[1]/h4[2]/a").click()
title = driver.find_element_by_xpath("//html/body/div[1]/div[3]/div/div[2]/div/div/div[2]/div[1]/h4[2]").text
price = driver.find_element_by_xpath("//html/body/div[1]/div[3]/div/div[2]/div/div/div[2]/div[1]/h4[1]").text
hdd = driver.find_element_by_xpath("//html/body/div[1]/div[3]/div/div[2]/div/div/div[2]/div[1]/h4[1]").text

print(price)
time.sleep(2)
driver.close()
 

Пока я этого добился, я открываю ссылку, нажимаю на первый товар, перехожу на страницу сведений и печатаю, например, цену или название.

Если есть кто-нибудь, кто может помочь с этим? Я хочу просмотреть все страницы (разбиение на страницы) и извлечь данные из всех продуктов.

Спасибо вам всем.

Ответ №1:

Я написал некоторый код, который просматривает каждый элемент на странице, захватывает название и цену элемента, а затем делает то же самое на каждой странице. Мой окончательный рабочий код выглядит так:

 data = []
page_url = "https://webscraper.io/test-sites/e-commerce/static/computers/laptops"
driver.get(page_url)
links = driver.find_elements_by_css_selector('a.title')
for x in range(20):
    for i in range(len(links)):
        driver.find_elements_by_css_selector('a.title')[i].click()
        title = driver.find_element_by_xpath("//html/body/div[1]/div[3]/div/div[2]/div/div/div[2]/div[1]/h4[2]").text
        price = driver.find_element_by_xpath("//html/body/div[1]/div[3]/div/div[2]/div/div/div[2]/div[1]/h4[1]").text
        print(title   ": "   price)
        data.append((title, price))
        driver.execute_script("window.history.go(-1)")
    driver.find_element_by_css_selector('a[rel="next"]').click()
driver.close()