-1
votes

Je veux gratter les images sur un site Web dynamique mais je n'ai aucune idée de la façon dont

Je cherche des conseils sur la façon d'aborder ce problème. Voici l'affaire. Je travaille pour Givenchy et je veux gratter toutes les images de https://www.givenchy.com/us/en-us/women/bags/all-bags/?start=0&sz=21 afin de les compiler pour une action photo. Les images que je veux sont celles qui apparaissent initialement, c'est-à-dire celles qui apparaissent sur le site Web avant de mettre votre souris sur l'image. La distinction est importante car lorsque vous mettez votre souris sur l'image, il se transforme en une image d'un modèle portant le sac; Je veux seulement l'image du sac lui-même. Lorsque j'inspecte la page avec l'outil d'inspection Chrome, je ne peux voir que le lien pour l'image avec le modèle.

Y a-t-il un moyen de faire ce que je veux et si oui comment?


0 commentaires

3 Réponses :


1
votes

sélénium code> n'est pas nécessaire. La photo est à l'intérieur de la balise code>, donc avec le sélecteur CSS correct et la manipulation de chaîne Vous pouvez obtenir les URL de la photo.

Par exemple: P>

url = 'https://www.givenchy.com/us/en-US/women/bags/all-bags/?start=0&sz=21'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

for p in soup.select('picture.thumb-img source[media="(min-width: 1800px)"][srcset*="/images/"]'):
    pic_url = p['srcset'].split(',')[-1].split()[0].replace('?sw=800', '?sw=1920')
    name = p.find_next(class_='product-name').get_text(strip=True)
    print(name, pic_url)


3 commentaires

Ok alors maintenant mon objectif a changé. Les images de votre liste sont une qualité trop basse, donc j'aimerais pouvoir "cliquer sur" chaque image puis sur la page les liens d'image, téléchargez les images de qualité supérieure. Comment puis je faire ça?


@Fernandovarela Modifier le ? SW = 800 Paramètre dans les URL à quelque chose comme ? SW = 1920 ou plus ..., voir mon édition.


Question supplémentaire. Y a-t-il un moyen pour moi de faire correspondre à l'URL d'image avec le nom du sac tel qu'il est affiché sur le site Web? Fondamentalement, lorsque je télécharge ces images, je voudrais avoir le nom du sac comme nom du fichier.



0
votes

Vous inspectez probablement l'élément après avoir plané sur l'image, c'est pourquoi cela vous donne l'image du modèle. Le lien est à jour sur Hover de (Image de sac d'origine) GIVENCHY.COM/DW/IMAGE/V2/BBRT_PRD/ON/DEMANDWARE.STATIC/-/SITES-GIVENCHY_MASTER/DEFAULT /DE86ACK579

à l'image du modèle:

GIVENCHY.COM/DW/IMAGE/V2/BBRT_PRD/ON/DEMANDWARE.Static / - / Sites-GIVENCHY_MASTER / Par défaut / DWD050AC75 /Images/BB500CB0WY001/BB500CB0WY001-01-02.jpg? SW = 466

Voir la différence de texte audacieux. Essayez de forer en dessous de XPath sans naviguer sur l'image du sac: / html / body / div [1] / main / div [5] / div [2] / div [3] / div / div / ul / li [1] / div / figure / A [1] / Image [1] / Source [3]
Comme Andrej a pointé ci-dessus, vous pouvez utiliser beauxoup pour y parvenir.


1 commentaires

Pour obtenir l'image complète, supprimez simplement le `` `? SW = 466` `` de la fin de l'URL



0
votes

Pour imprimer la valeur de l'attribut srcset em> des images avant la souris, vous devez induire webDriverwait pour le visibilité_of_element_located () code> et vous pouvez utiliser l'un des éléments suivants Stratégies de localisation :

  • en utilisant css_selector code>: p>

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • en utilisant xpath code>: p>

    ['https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dwe86ac579/images/BB500CB0WY001/BB500CB0WY001-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw8c8efbee/images/BB50F2B0WY001/BB50F2B0WY001-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw2264f584/LOOKS%20FWxS20/ECOM2.jpg?sw=1000', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw72d49df0/images/BB50F2B0WD001/BB50F2B0WD001-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw16bf6873/images/BB50F0B0WD001/BB50F0B0WD001-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dwa89db782/images/BB50F0B0WD309/BB50F0B0WD309-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dwb8bb418a/images/BB50F0B0WD051/BB50F0B0WD051-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dweacfc390/images/BB50F2B0WD292/BB50F2B0WD292-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw51675237/images/BB50F2B0WD051/BB50F2B0WD051-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw47ef9b42/images/BB50F3B0WD001/BB50F3B0WD001-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw32b9df63/images/BB50F3B0WD051/BB50F3B0WD051-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw102294c8/images/BB50F3B0WD496/BB50F3B0WD496-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw09d01050/images/BB50F3B0WD662/BB50F3B0WD662-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw442b46a4/images/BB50F2B0WD542/BB50F2B0WD542-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw1e454ef3/images/BB50F2B0WD309/BB50F2B0WD309-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw3aa399b9/images/BB05117012542/BB05117012542-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw9eb8ec2d/images/BB05114012542/BB05114012542-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw7e12db48/images/BBU017B00B001/BBU017B00B001-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw924ff9f6/images/BBU017B00B058/BBU017B00B058-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw1974540d/images/BBU017B00B662/BBU017B00B662-01-01.jpg?sw=466', 'https://www.givenchy.com/dw/image/v2/BBRT_PRD/on/demandware.static/-/Sites-Givenchy_master/default/dw28c6592d/images/BBU017B00B140/BBU017B00B140-01-01.jpg?sw=466']
    
  • Sortie de la console: P>

    driver.get('https://www.givenchy.com/us/en-US/women/bags/all-bags/?start=0&sz=21')
    print([my_elem.get_attribute("srcset") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//ul[@class='search-result-items tiles-container js-slv-product-grid row']//figure[contains(@class, 'product-image ')]//picture[@class='thumb-img']//img")))])
    
  • note forte>: Vous devez ajouter les importations suivantes: p>

    driver.get('https://www.givenchy.com/us/en-US/women/bags/all-bags/?start=0&sz=21')
    print([my_elem.get_attribute("srcset") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "ul.search-result-items.tiles-container.js-slv-product-grid.row figure.product-image picture.thumb-img img")))])
    


0 commentaires