a Utilisez le code suivant sur Web-gratter des informations sur les chaussures sur "https://www.adidas.com/us/men-shoes": Voici un exemple de la Les données que je reçois pendant que web raclant une chaussure particulière: p> Voici les données que je reçois lorsque je copie une chaussure directement à partir du site Web: P> <div class="gl-product-card color-variations__fixed-size glass-product-card___17N3p">
<div class="gl-product-card__assets">
<a data-auto-id="glass-hockeycard-link" href="/us/zx-2k-4d-shoes/FW2003.html" class="gl-product-card__assets-link" data-di-id="di-id-93927325-c0dba7aa">
<img
data-auto-id="image"
title="ZX 2K 4D Shoes"
src="https://assets.adidas.com/images/w_385,h_385,f_auto,q_auto:sensitive,fl_lossy/d704fc8256204415b713ab6600f76418_9366/zx-2k-4d-shoes.jpg"
alt="Originals White ZX 2K 4D Shoes"
class="img_with_fallback___2aHBu gl-product-card__image performance-item"
data-inject_ssr_performance_instrument=""
onload="SSR_PERFORMANCE_MEASUREMENT(this)"
/>
<img
data-auto-id="image"
title="ZX 2K 4D Shoes"
src="https://assets.adidas.com/images/w_385,h_385,f_auto,q_auto:sensitive,fl_lossy/e169facc2c554c21b9d1ab880150342a_9366/zx-2k-4d-shoes.jpg"
alt="Originals White ZX 2K 4D Shoes"
class="img_with_fallback___2aHBu gl-product-card__image-hover"
/>
</a>
<div class="gl-product-card__wishlist">
<div class="toggle_wishlist_button___1dG52" data-auto-id="wishlist-icon-container">
<svg class="gl-icon" data-auto-id="wishlist-icon" data-di-res-id="d45e29bb-1d8adc35" data-di-rand="1596955983257"><use xlink:href="#wishlist-inactive"></use></svg>
</div>
</div>
<div class="gl-badge gl-badge--small gl-badge--semi-urgent">New</div>
</div>
<div class="gl-product-card__details">
<a href="/us/zx-2k-4d-shoes/FW2003.html" class="gl-product-card__details-link" data-di-id="di-id-93927325-c0dba7aa">
<div class="gl-product-card__details-top">
<div class="gl-product-card__category" title="shoes">Originals</div>
<div class="gl-product-card__details-icons"></div>
</div>
<div class="gl-product-card__details-main">
<span class="gl-label gl-label--m gl-label--condensed gl-product-card__name" title="ZX 2K 4D Shoes">ZX 2K 4D Shoes</span>
<div class="gl-price gl-price--s gl-price__inline___-VD1g notranslate"><span class="gl-price__value">$200</span></div>
</div>
</a>
</div>
</div>
3 Réponses :
La page Web que vous discutez chargez des prix de manière dynamique après la charge de la page avec JavaScript. Beautifulsoup ne traite que de HTML, de sorte que le moyen facile de résoudre est de charger la page Web liée à chaque carte et d'obtenir le prix de la chaussure à partir de là, car la page de produit de chaque produit ne charge pas de manière dynamique de leurs prix. Une manière plus légère consiste à utiliser l'API JSON du site.
Dans ce cas, vous pouvez charger les ID du produit pour chaque produit de la liste des produits, puis demander ses informations à l'API JSON du site à https://www.adidas.com/api/search/product/fw2003 , pour le produit FW2003. De ce JSON, vous pouvez construire un dictionnaire utilisant le module de requêtes de Python. P>
par exemple: p>
Y a-t-il une méthode plus efficace plus de temps? J'ai besoin d'obtenir près de 100 chaussures
Cela ne semble pas fonctionner. Voulez-vous utiliser 'div' au lieu de 'A'?
Pour ce site particulier, vous aurez probablement un meilleur temps d'accéder à l'API JSON qu'ils utilisent pour les données. De cette façon, vous n'avez rien à gratter, il suffit d'analyser le JSON et de le lire p>
En regardant l'inspecteur réseau du site, P>
La beauté de ce site Web est que tous les produits d'une page sont stockés dans une variable JavaScript appelée - Une fois que vous avez obtenu les produits que vous devez faire un appel Ajax avec chaque productide pour obtenir les informations sur les prix. . P> Le script suivant obtient toutes les données du produit de la page, obtient les informations sur les prix et le stocke à un JSON. Une fois, vous avez le JSON, il est facile d'analyser le JSON P> Remarque *: Pour construire JSON hors de la variable JavaScript, c'est un peu délicat. Vous devez encoder et décoder pour supprimer les backslashes que le script prend en charge. P> sortie: p> à Obtenir les prix: p> sortie: p> data_store code>. Si vous pouvez obtenir cette valeur variable, vous obtenez les informations de base sur le produit. Mais à mesure que les prix sont associés à des réductions et à la période, le site Web fait un appel AJAX à chaque fois que vous faites défiler la page comme le chargement paresseux.