Скачать фоновое изображение с помощью селектора CSS - Selenium Python - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь извлечь все изображения, доступные на этой странице веб-сайта с Python и Selenium

. Для этого я использую селектор CSS с следующий код:

try :
    Pictures = self.browser.find_elements_by_css_selector('background-image')
except :
    Pictures = None

for picture in Pictures :
    print(picture.get_attribute("textContent"))

Однако ничего не происходит: нет сообщений об ошибках, нет пробелов ... просто ничего.

Моя конечная цель - загрузить эти картинки; как я могу это сделать?

Редактировать 1:

enter image description here

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

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

import re
import requests
from bs4 import BeautifulSoup

link = "https://www.sezane.com/fr/e-shop/collection-printemps-robes-robes-courtes"

res = requests.get(link)
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select("[id='cms_sortable'] .free-product__img"):
    match_image = re.search(r"url\('(.*?)'",item.get("style"))
    if match_image:
        print(match_image.group(1))

Вывод:

https://media.sezane.com/image/upload/q_auto:best/v1586276035/website/cms/product/imh92y33wziscjtz1mta.jpg
https://media.sezane.com/image/upload/q_auto:best/v1585924567/website/cms/product/c7umxdbyyqocwc5gzghy.jpg
https://media.sezane.com/image/upload/q_auto:best/v1585924561/website/cms/product/jfdjdxqo5ek3oeziggxc.jpg
https://media.sezane.com/image/upload/q_auto:best/v1585931708/website/cms/product/qhmxfoo95ftlbzsiplid.jpg
https://media.sezane.com/image/upload/q_auto:best/v1585907671/website/cms/product/ng7vbbd39cnooqzqgzgt.jpg
0 голосов
/ 11 апреля 2020

, пожалуйста, попробуйте приведенное ниже решение, в вашем коде неправильный селектор csss ::

 driver.maximize_window()
 driver.get('https://www.sezane.com/fr/e-shop/collection-printemps-robes-robes-courtes')   
 elements = WebDriverWait(driver, 15).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[contains(@id,'_divVisualPrimary')]")))

for element in elements:
   element=element.value_of_css_property("background-image")
   print(re.split('[()]',element)[1])

Примечание: , пожалуйста, добавьте ниже импорта в ваше решение

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

enter image description here

...