0
votes

Les données récupérées du site à l'aide de magnifiquesSoup sont différentes que des données affichées sur le site.

a Utilisez le code suivant sur Web-gratter des informations sur les chaussures sur "https://www.adidas.com/us/men-shoes": xxx pré>

Voici un exemple de la Les données que je reçois pendant que web raclant une chaussure particulière: p> xxx pré>

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>


0 commentaires

3 Réponses :


2
votes

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.

par exemple: xxx


2 commentaires

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'?



2
votes

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

En regardant l'inspecteur réseau du site,


0 commentaires

1
votes

La beauté de ce site Web est que tous les produits d'une page sont stockés dans une variable JavaScript appelée - data_store . 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.

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. .

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

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. xxx

sortie: xxx

à Obtenir les prix: xxx

sortie: xxx


0 commentaires