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. P>
Y a-t-il un moyen de faire ce que je veux et si oui comment? P>
3 Réponses :
Par exemple: P> sélénium code> n'est pas nécessaire. La photo est à l'intérieur de la balise 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)
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 code> Paramètre dans les URL à quelque chose comme ? SW = 1920 Code> 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.
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: p>
GIVENCHY.COM/DW/IMAGE/V2/BBRT_PRD/ON/DEMANDWARE.Static / - / Sites-GIVENCHY_MASTER / Par défaut / 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] Code>
Comme Andrej a pointé ci-dessus, vous pouvez utiliser beauxoup code> pour y parvenir. P>
Pour obtenir l'image complète, supprimez simplement le `` `? SW = 466` `` de la fin de l'URL
Pour imprimer la valeur de l'attribut srcset em> des images avant la souris, vous devez induire webDriverwait pour le en utilisant en utilisant Sortie de la console: P>
note forte>: Vous devez ajouter les importations suivantes: p>
visibilité_of_element_located () code> et vous pouvez utiliser l'un des éléments suivants Stratégies de localisation :
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
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']
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")))])
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")))])