Partage
  • Partager sur Facebook
  • Partager sur Twitter

Scraping - Invalid URL

    25 novembre 2023 à 18:46:24

    Bonsoir,

    J'essaye de scraper la page d'un article sur METRO.fr mais quand j'utilise le module requests je n'ai pas tout le contenu de la page et cela me renvoie un message d'erreur (URL invalide) alors que le l'URL est valide. Je ne sais pas si j'utilise les bons "headers", y a t-il un moyen de scraper le site sans utiliser Selenium ?

    Merci d'avance.

    import requests
    import json
    
    headers = {
        'Host': 'app-search-2.prod.de.metro-marketplace.cloud',
        'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0',
        'Accept': 'application/json, text/plain, */*',
        'Accept-Language': 'fr-FR',
        'Accept-Encoding': 'gzip, deflate, br',
        'Content-Language': 'fr-FR',
        'Country-Code': 'fr',
        'X-ID-GA': 'GA1.2.556129535.1700910527',
        'X-ID-OM': '556129535.1700910527',
        'Origin': 'https://www.metro.fr',
        'Connection': 'keep-alive',
        'Referer': 'https://www.metro.fr/',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'cross-site',
        'TE': 'trailers',
    }
    
    response = requests.get('https://app-search-2.prod.de.metro-marketplace.cloud/api/v3/search?offset=0&limit=40&q=frigo&filter%5Btop%5D%5Bphrase%5D=frigo&filter%5BpriceType%5D=entrepreneur&orderBy=bestMatch&order=desc&useRecommendedProductsParser=1&useCharacteristics=1', headers= headers)
    
    code_json = json.loads(response.text)
    produits = code_json.get('items')
    
    urls_produits = open('urls_produits.txt', 'w')
    for produit in produits:
        urls_produits.write("https://www.metro.fr/marketplace/product/" + produit.get('id') + "\n")
    urls_produits.close()
    
    session = requests.Session()
    response = session.get("https://www.metro.fr/marketplace/product/a4e69df6-2311-4a39-956a-e9d21aa136a5", headers=headers)
    print(response.text)



    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2023 à 12:37:30

      Bonjour,

      Chez moi ça fonctionne sans headers

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        26 novembre 2023 à 15:09:23

        Bonjour,

        Merci pour ta réponse mais je parlais plus de cette partie du code

        session = requests.Session()
        response = session.get("https://www.metro.fr/marketplace/product/a4e69df6-2311-4a39-956a-e9d21aa136a5", headers=headers)
        print(response.text)



        • Partager sur Facebook
        • Partager sur Twitter
          26 novembre 2023 à 20:39:06

          Bonjour,

          Je remarque dans la réponse ce texte

          Sorry, only our team of experts has access here.

          Peut-être une protection, type CAPTCHA, IP Blacklisting, ... ?

          Tu devrais chercher du côté des API pour metro.fr, et si tu n'en trouves pas, je vois guère de solution.

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

          Scraping - Invalid URL

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown