无法刮擦所有产品色板

时间:2020-04-24 03:20:11

标签: python html selenium web-scraping

我正在尝试在Sephora上刮擦图像URL和产品颜色阴影的名称,并且能够获取所有阴影的URL和名称,但当前单击的颜色除外(这似乎是默认单击的)。我究竟做错了什么?

示例产品:link

请参见以下代码:

def get_shade_names(url):
global names_df
driver.get(url)
shade_names = []
shade_items = driver.find_elements_by_class_name('css-1ax77m2')
btn = driver.find_element_by_class_name('css-ctsnxi')
sleep(2)
btn.click()
sleep(5)
for item in shade_items:
    name_tags = item.find_elements_by_class_name('css-1j1jwa4')
    sleep(2)
    for tag in name_tags:
        shade_name = tag.get_attribute('aria-label')
        sleep(2)
        shade_names.append(shade_name)

names_df = pd.DataFrame(shade_names, columns = ['Shade_name'])
return names_df

1 个答案:

答案 0 :(得分:1)

由于按钮具有不同的类名称,即class="css-1p28rvx "

,因此您没有获得默认的选定阴影名称。

您可以尝试在CSS路径下获取所有阴影名称,包括默认选择的一个

shade_names = []
shade_elements = driver.find_elements_by_css_selector('.css-1ax77m2 button')
for element in shade_elements:
    shade_name = element.get_attribute('aria-label')
    shade_names.append(shade_name)

print(len(shade_names))
print(shade_names)
相关问题