#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()