Webscrapper addresse postales restaurant mcdonald

Bonjour , j’essaye de créer un code qui me permets de scrapper les addresses postales de tous les restaurants mcdonald de france à partir du site de Mcdo .Cependant, je rencontre un problème lié a un hypothétique "anti-scrapping ". Auriez vous une idée me permettant de contourner ce problème ?


Salut @datastudent! Tu dois sûrement utiliser une meilleure empreinte et des proxies pour réaliser cette tâche. Tu peux t’inscrire ici, récupérer un token API (1000 requêtes gratuites) et passer par cette passerelle. Ce sera plus simple :slight_smile:

import requests
from bs4 import BeautifulSoup

# Replace 'YOUR_API_KEY' with your actual access key
api_key = 'TOKEN'
api_url = 'https://piloterr.com/api/v2/website/crawler'

# Header with the access key
headers = {'x-api-key': f'{api_key}'}

# List of URLs to crawl
urls = [
    "https://www.mcdonalds.fr/restaurants/mcdonalds-luc-la-primaube/1541",
    "https://www.mcdonalds.fr/restaurants/mcdonalds-chatellerault/759"
    # Add more URLs here
]

for url in urls:
    try:
        response = requests.get(
            url=api_url,
            headers=headers,
            params={'query': url}
        )
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, 'html.parser')
            restaurant_address_tag = soup.find('p', class_='restaurant-card-address')
            
            if restaurant_address_tag:
                restaurant_address = restaurant_address_tag.get_text()
                print(f"Restaurant address ({url}):")
                print(restaurant_address)
            else:
                print(f"<p> tag with class 'restaurant-card-address' not found on {url}.")
        else:
            print(f"Request for {url} failed.")
    except Exception as e:
        print(f"An error occurred for {url}:", e)

Bon courage !

Tu ne veux pas partir de la carte ?
https://www.mcdonalds.fr/restaurants
Tu peux ensuite boucler sur les restaurants :
https://ws.mcdonalds.fr/api/restaurant/1538
en incrémentant le dernier paramètre…

1 « J'aime »

J’avais pas vu cet EP, encore plus simple du coup !

1 « J'aime »

tiens en passant par une autre facon :

4 « J'aime »

Plus personne va bosser @Sonic

1 « J'aime »