Hi Guuys我正在尝试收集一些关于Zalando鞋子的信息,并使用Seleum网络驱动器将价格、标题、日期和时间保存在不同的变量中。这是我的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import csv
DRIVER_PATH = 'C:\chromedriver.exe'
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
driver.get('https://www.zalando.es/release-calendar/zapatillas-mujer/')
# Get the data of product 1 (If I change the /div/div[1]/div and I choose another number, it will get ther data of other shoe)
product_1 = driver.find_element(By.XPATH, '//*[@id="release-calendar"]/div/div[1]/div')
element_text = product_1.text
print(element_text)
当我打印下一段代码的ELEMENT_TEXT时,我得到了关于该产品的许多信息。我想把它保存在不同的变量中,所以我尝试了一件事(继续阅读)
109,95欧元耐克运动装WMNS扣篮低CZ 10 de noviembre de 2022,8:15创纪录
所以问题是,在这个小代码起作用后,我试图通过添加这个代码来拆分数据,然后保护不同变量中不同类型的数据,但我遇到了一个问题:
from selenium import webdriver
from selenium.webdriver.common.by import By
import csv
DRIVER_PATH = 'C:\chromedriver.exe'
driver = webdriver.Chrome(executable_path=DRIVER_PATH)
driver.get('https://www.zalando.es/release-calendar/zapatillas-mujer/')
# Select product 1
product_1 = driver.find_element(By.XPATH, '//*[@id="release-calendar"]/div/div[1]/div')
element_text = product_1.text
# Split the data
element_text_split = element_text.split()
# Price 1 --> Result=109.95
price_1 =element_text_split[0]
print(price_1)
# Result=109,95
# Title 1 --> Result=€
title_1 =element_text_split[1]
print(title_1)
这两张照片的结果是:“109.95”和“欧元”
我以为Element_Text_Split[1]是耐克运动装,但不是,它是欧元符号,因为我是按数据之间的空格来划分数据的。
如果我想得到球鞋的名字,这是个大问题,因为名字之间没有相同的空格,比如:耐克扣篮低Cz或空中乔丹One Mid 1
我怎么才能解决这个问题??塞恩斯
3条答案
按热度按时间cygmwpex1#
我想你可能在找这样的东西吧?
bn31dyow2#
一种想法是查看许多不同产品的变量ELEMENT_TEXT,并决定一种不同的文本拆分方式--split method可以接受一个较小的字符串来拆分较长的字符串。
如果这不起作用,您还可以遍历ELEMENT_TEXT_SPLIT变量(它只是一个字符串列表),并通过查找某些较小的字符串或使用regex来分解该字符串列表。
例如,要找到价格,您可以先查找数字、句点,然后再查找数字。我猜产品的名字不是在前面就是在后面。盖尔!
5kgi1eie3#
您可以通过使用Selify和BS4的强大方式获取所需的数据
输出: