Amazon: Récupérer informations de livres d'une catégorie

Bonjour à tous,

J’aimerais récupérer les informations de livres (nom, image, description, auteur) d’une catégorie spécifique (bien-être en l’occurence) sur Amazon. Afin d’en créer une base pour une plate forme de discussion sur ce sujet.

Comment puis-je procéder ?

Merci d’avance de vos réponses
Bonne soirée

Bonjour @lepounch,

J’ai regardé rapidement, un script python semble suffisant.
Le seul *Hic semble être la description du livre à récupérer.
Peux-tu nous transmettre le lien de la page, je peux jeter un coup d’oeil plus en détail.

Bonne journée

Hello,

Merci pour ton retour,

Ce serait tous les livres de cette categorie:
https://www.google.fr/url?sa=t&source=web&rct=j&url=https://www.amazon.fr/D%C3%A9veloppement-personnel-Sant%C3%A9-Bien-%C3%AAtre-Livres/b%3Fie%3DUTF8%26node%3D302081&ved=2ahUKEwi5yoObt6PkAhUNzoUKHYTwB2gQFjABegQIBBAB&usg=AOvVaw1XSV7noer5fzTDJq3hwgOH

Je ne sais pas si c’est ça que tu voulais ?
Merci encore
Bonne soirée

l’API ne donne pas les info que tu cherches ?!

Tu crois qu’il y a possibilité de récupérer tous les livres de cette catégorie avec toutes les informations les.concernant ?

Bonjour @lepounch,

J’ai pris le temps de creuser un peu le sujet, c’est plus complexe que je pensais mais loin d’être infaisable.
Je pense pouvoir extraire un échantillon des infos des livres que tu recherches. Je n’ai pas le temps et ma machine non plus d’extraire chaque info pour chaque livre. ( 15 livres / pages, soit 1125 requêtes, ça commence à chiffrer gentiment ^^ )

Pour info quand on commence à taper dans les livre à la page 10/11, il n’y a plus d’auteur sur certain livre.
Si tu connais un peu Python, je peux te passer le script que j’ai effectué à la volé, ou un CSV ou xlsx avec l’échantillon :slight_smile:

Bonne journée.

Hello @Neeko

Merci pour ce retour. Je suis preneur pour tout. Comment fait-on pour le transfert de tes fichiers ?

Merci beaucoup de ton temps

Salut @lepounch,

J’ai testé mon code sur 3/4 pages, je recupere titre, auteur, ISBN.
Je te laisse le code, il peut largement être amélioré.
Pour la clé api, il faut aller sur ScrapperAPI et créer un compte.

import json
from bs4 import BeautifulSoup
import requests
import pandas as pd


def get_asin():
    a = []
    url = 'https://www.amazon.fr/D%C3%A9veloppement-personnel-Sant%C3%A9-Bien-%C3%AAtre-Livres/b?ie=UTF8&node=302081'

    for x in range(1,3):  # nombre de pages à scrapper
        payload = {'api_key': 'API_KEY', 'url': url} # clé API de scraperAPI à indiquer

        request = requests.get('http://api.scraperapi.com', params=payload)
        soup = BeautifulSoup(request.text, 'html.parser')
        if soup.select('span.pagnRA > a.pagnNext'):
            for asin in soup.select('li.s-result-item.celwidget'):
                dict = {}
                dict['ASIN'] = asin.attrs['data-asin']
                a.append(dict)
            t= soup.select('span.pagnRA > a.pagnNext')
            url = 'https://www.amazon.fr'+t[0].attrs['href']
        else:
            for asin in soup.select('div.sg-col-20-of-24.s-result-item.sg-col-0-of-12.sg-col-28-of-32.sg-col-16-of-20.sg-col.sg-col-32-of-36.sg-col-12-of-16.sg-col-24-of-28'):
                dict = {}
                dict['ASIN'] = asin.attrs['data-asin']
                a.append(dict)
            u = soup.select('li.a-last > a')
            url = 'https://www.amazon.fr'+u[0].attrs['href']
    return a

asin = get_asin()

b = []
try:
    for element in asin:
        dict_b = {}
        url_article = 'https://www.amazon.com/dp/'+element['ASIN']
        payload = {'api_key': 'API_KEY', 'url': url_article}# clé API de scraperAPI à indiquer
        req = requests.get('http://api.scraperapi.com', params=payload)
        soup = BeautifulSoup(req.text, 'html.parser')
        data = soup.find('title')
        data_raw = data.contents[0].split(':')
        del data_raw[-2:]
        dict_b['ISBN'] = data_raw.pop(-1)
        dict_b['auteur'] = data_raw.pop(-1)
        dict_b['titre'] = str("" .join(data_raw))
        b.append(dict_b)
        print(b)

except:
    pass



df = pd.DataFrame(b)
df.head(len(b))
df.to_csv(r'/GrowthHack.csv')

Lien des résultats

Si tu veux améliorer le code rapidement, regarde les balises dans le code source de la page Amazon, oû tu as le titre, image, description etc…
Pour expliquer le déroulement, je récupere le code ASIN de chaque livre, puis je vais parcourir chaque page de chaque livre pour prendre les informations.

Pour cela je concatene : URL amazon + code ASIN

J’ai été au plus simple de mon coté, j’ai récupéré la balise title et son contenu que j’ai splitté.

Bonne journée

Ok super merci !!

Je vais regarder ça maintenant!

Merci encore
Bonne journée