Web scraping

Fermé
crepin - 29 nov. 2022 à 10:35
Diablo76 Messages postés 204 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 30 octobre 2024 - 29 nov. 2022 à 17:23

Bonjour,

def get_all_pages():
    urls = []
    page_number = 1
    
    for i in range(2):
        i = f"https://www.prix-carburants.gouv.fr/recherche/?page=%7Bpage_number%7D"
        page_number += 1
        
        #print(i)
        urls.append(i)
        
    #print(urls)
    
    return urls
get_all_pages()    
    #return urls

def Parse_scrap():
    r = requests.get("https://www.prix-carburants.gouv.fr/recherche/?page=1")
    
    soup = BeautifulSoup(r.content, "html.parser")
    
    
    web = soup.findAll("tr class", h4 = "title")
    #print(soup)
    print(web)
    
Parse_scrap()

J'aimerais savoir ce qui ne marche pas sur mon code j'ai envie de récupérer l'ID et la marque de chaque station sur le lien qui est dans le code
Windows / Edge 107.0.1418.56

A voir également:

3 réponses

mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806
29 nov. 2022 à 11:17

Bonjour,

Je vois deux problèmes :

  • Dans la ligne 6, la variable i n'est pas utilisée dans ta f-string. C'est plus probablement :
url = f"https://www.prix-carburants.gouv.fr/recherche/?page=%7Bi%7D"
  • Ton script ne lance pas de recherche. Or l'URL précédente n'a de sens que si tu as formulé au préalable sur le site une recherche (par exemple, le type de carburant, le département, etc). Il faudrait donc au préalable construire une requête qui reproduit ce qui se passe quand tu soumets le formulaire de recherche dans ton navigateur.

Au delà de la question, cela vaudrait le coup de regarder au préalable s'il n'y a pas une API qui permet d'interroger directement le jeu de données qui t'intéresse (voir ce lien et ce lien). Cela t'éviterait de devoir scrapper les pages de résultats.

Bonne chance

0

L' API ne fournit pas les deux simultanément (ID et Marque) d'où l'intérêt pour moi de scrapper  

0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806
29 nov. 2022 à 15:39

Au pire du pire si tu n'arrives pas à construire la bonne requête, tu peux utiliser selenium. C'est un peu l'artillerie lourde quand on ne peut pas s'en sortir plus élégamment. Ça ne veut pas dire qu'on ne peut pas s'en sortir juste avec requests dans le cas présent.

0

Tu peux me filer le code s'il te plait? je ne maitrise pas selenium, puisque tu as le lien du site tu peux regarder et me dire s'il te plait. merci

0
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806 > crepin
Modifié le 29 nov. 2022 à 16:52

Le code est à adapter à ton site web. Je n'aurai pas le temps de le faire pour ton site en particulier. Voici un tutoriel pour démarrer. Il existe deux drivers pour selenium : chromium/chrome et firefox. L'idée est d'orchestrer le navigateur pour reproduire un comportement humain et ensuite récupérer la page. Le lien que je t'ai donné montre comment faire pour faire une recherche sur www.google.fr.

1
Diablo76 Messages postés 204 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 30 octobre 2024 44 > mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024
29 nov. 2022 à 17:23

+1 pour selenium, aujourd'hui tous les sites sont dynamiques (JavaScript), difficile de scrapper sans...

0