使用Selenium在电子商务页面上删除嵌套元素(产品样本颜色)

2024-05-19 10:53:10 发布

您现在位置:Python中文网/ 问答频道 /正文

当样本元素嵌套且没有类名时,我试图从Ulta的网站上刮取产品样本颜色名称(“alt”)和img SRC。我的抓取结果包括我不想要的其他元素,但我不确定(对于python和抓取来说也是非常新的)如何删除它们

网址:https://www.ulta.com/born-this-way-undetectable-medium-full-coverage-foundation?productId=xlsImpprod12621017

html的屏幕截图:

Screenshot

我的代码:

driver = webdriver.Chrome(chromedriver)
driver.get(url)
time.sleep(10)

shade_names = []

elems = driver.find_elements_by_class_name('Loader__small')
for elem in elems:
    img = elem.find_element_by_tag_name('img')
    name = img.get_attribute('alt').encode('utf-8')
    shade_names.append(name)

print(shade_names)

我的代码的结果(我不希望文本出现在“Cloud(最美丽的w/rosy undertones)”之前,并在末尾加引号):

“ULTA美容集”、“香奈儿”、“阿纳斯塔西娅贝弗利山”、“倩碧”、“Burle and Bulle”、“汤姆·福特”、“水果挞”、“化妆革命”、“Kiehl”、“More”、“太面子”、“FAN-FAVE”、“太面子”这种方式无法检测到中到完全覆盖的基础天然米色(轻中度W/中性底色)“0”,“太生”,这种方式无法检测到中到完全覆盖的基础天然米色(轻中度W /中性底色)×1’,“太生生这种方式无法检测到的介质完全覆盖的基础天然米色(轻中度W /中性底色)×2’,太面朝这种方式,无法检测到中等覆盖率的基础天然米色(轻中度W /中性底色)×3’,“太生生这种方式不可检测到的介质完全覆盖的基础天然米色(轻中度W /中性底色)×4’,‘太面生的这种方式无法检测到完全覆盖的基础天然米色。(轻中带中性底色)#5、‘明暗探测器图像’、‘自然米色(轻中带中性底色)’、‘云(最白带玫瑰底色)’、‘天鹅(最白带玫瑰底色)’、‘雪(最白带玫瑰底色)’、‘象牙(最白带黄金底色)’、‘珍珠(非常白带玫瑰底色)’、‘杏仁’(非常浅色带金色底色)、‘贝壳(非常浅色带玫瑰色底色)’、‘瓷器(非常浅色带中性底色)’、‘香草(非常浅色带中性底色)’、‘裸色(非常浅色带玫瑰色底色)’、‘温暖的裸体(非常浅色带中性底色)’、‘浅米色(浅色带中性底色)’、‘天然米色’(轻-中-带中性底色)选中“,”金黄色(轻-带金色底色)”,“暖米色(中-带中性底色)”,“沙色(中-带金色底色)”,“金黄色(中-带玫瑰色底色)”,“普拉琳(中-带金色底色)”,“暖沙色(带金色底色)”,“蜂蜜(带中性底色))‘焦糖(浓黑/中性色调)’、‘Brulee(浓黑/金色色调)’、‘摩卡(浓黑/玫瑰色色调)’、‘奶油山核桃(浓黑/金色色调)’、‘枫树(浓黑/中性色调)’、‘栗子(浓黑/金色色调)’、‘柴(浓黑/金色色调)’、‘桃花心木’(非常深的w/金色底调)“‘香料朗姆酒(非常深的w/玫瑰色底调)’,‘榛子(最深的w/玫瑰色底调)’,‘可可(最深的w/中性底调)’,‘提拉米苏(最深的w/金色底调)’,‘黑貂(浓烈的w/玫瑰色底调)’,‘块菌(浓烈的w/金色底调)’,‘甘纳切(最浓烈的w/中性底调)",",",",",",


Tags: nameimg方式色调基础中性玫瑰浅色
1条回答
网友
1楼 · 发布于 2024-05-19 10:53:10

time.sleep(10)行之后,我添加了以下代码部分。对我来说,这是有效的。请你也试试

代码

time.sleep(10)

shade_names = []

elems = driver.find_elements_by_class_name('ProductSwatches__Cell')
for elem in elems:
    img = elem.find_element_by_tag_name('img')
    name = img.get_attribute('alt')
    name = name.split(' ')[0]
    shade_names.append(name)

print([x for x in shade_names if x])

对我来说,结果是:

['Cloud', 'Swan', 'Snow', 'Ivory', 'Pearl', 'Almond', 'Seashell', 'Porcelain', 'Vanilla', 'Nude', 'Warm', 'Light', 'Natural', 'Golden', 'Warm', 'Sand', 'Golden', 'Praline', 'Warm', 'Honey', 'Caramel', 'Brulee', 'Mocha', 'Butter', 'Maple', 'Chestnut', 'Chai', 'Mahogany', 'Spiced', 'Hazelnut', 'Cocoa', 'Tiramisu', 'Sable', 'Truffle', 'Ganache']

我看到有36种颜色,所以计数器结果也是正确的

相关问题 更多 >

    热门问题