Vol scraping

Bonjour à toute la communauté,

Je veux utiliser python pour extraire les informations un site de vol.
Je ne suis pas un codeur et n’y connais rien mais je debute avec l’aide des IA.

Je souhaite scraper des vols à venir à partir d’un numéro de vol et de la date.

J’ai deja consulté des IA mais leur codes n’extrait pas les infos.

Voici un exemple de vol (respectivement) :

  • numéro de vol = AF 719 then TP 437
  • date de vol = 18-03-2025 then 25-03-2025

Ce que je veux extraire :

  • departure_airport":
    « arrival_airport »:
    « departure_time »:
    « arrival_time »:

Est ce que quelqu’un aurait deja fait cela ?
Avez-vous des solutions, idées, code dispo… ?

Bonne journée a vous et merci

Quel site essaies-tu de scraper ?

Bonjour,

Je n’ai pas de site specifique. Sinon voici quelques :

Merci d’avance

Pour répondre à ta question, les codes que tu as utilisés n’ont probablement pas fonctionné parce qu’ils cherchaient directement dans le HTML, alors que la plupart des sites affichent désormais leurs informations via JavaScript.

Ensuite, les sites que tu m’as envoyés ne semblent pas permettre d’accéder aux vols des compagnies au-delà de quelques jours. J’en ai donc choisi un autre qui le permet.

Je t’ai fait un code qui te permet de faire ce que tu demandes. Cependant, tu devras installer Playwright sur ton terminal. Si tu ne sais pas comment faire, demande à ChatGPT, c’est rapide.

N’hésite pas si tu as des questions !

Voici ce que cela devrait t’afficher (tu peux ajouter plus de dates et vols).

Vérification du vol AF 719 (18-03-2025)...
Départ: Diass, Senegal (DSS) - 11:30 PM
Arrivée: Paris, France (CDG) - 6:10 AM

Vérification du vol TP 437 (25-03-2025)...
Départ: Paris, France (ORY) - 5:40 PM
Arrivée: Lisbon, Portugal (LIS) - 7:10 PM

Et voici le code

from playwright.sync_api import sync_playwright

def convert_date(date_str):
    """Convertit DD-MM-YYYY en YYYYMMDD"""
    return date_str[-4:] + date_str[3:5] + date_str[:2]

vols = {
    "AF 719": "18-03-2025",
    "TP 437": "25-03-2025"
}

def extraire_infos_vol(page):
    def get_info(prefix):
        try:
            aeroport = page.locator(f"#txt_{prefix}aptlnk").inner_text()
        except:
            aeroport = "N/A"
            
        try:
            heure = page.locator(f"#tbl_{prefix} td:has-text('Scheduled Time:') + td").first.inner_text().split(',')[0]
        except:
            heure = "N/A"
            
        return {'aeroport': aeroport, 'heure': heure}
    
    return {
        'depart': get_info('dep'),
        'arrivee': get_info('arr')
    }

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    
    for vol, date_str in vols.items():
        compagnie, numero = vol.split()
        date_formatee = convert_date(date_str)
        url = f"https://www.flightview.com/TravelTools/FlightTrackerQueryResults.asp?qtype=sfi&sfw=%2FFV%2FFlightTracker%2FMain&whenArrDep=dep&namal={compagnie}&al={compagnie}&fn={numero}&whenDate={date_formatee}&input=Track+Flight"
        
        try:
            print(f"\nVérification du vol {vol} ({date_str})...")
            
            page.goto("about:blank")  
            page.goto(url, wait_until="domcontentloaded") 
            page.wait_for_selector("#txt_depaptlnk, #txt_arraptlnk", timeout=5000)  
            
            infos = extraire_infos_vol(page)
            print(f"Départ: {infos['depart']['aeroport']} - {infos['depart']['heure']}")
            print(f"Arrivée: {infos['arrivee']['aeroport']} - {infos['arrivee']['heure']}")
            
        except Exception as e:
            print(f"Erreur avec {vol} : {str(e)}")
            page.reload()

    browser.close()

Cette version me parait être la plus adéquate pour ce que tu as demandé. J’ai également fait une seconde version qui te permet de vérifier chaque vol pour chaque date. Tu peux la retrouver dans les modifications ultérieures de ce message si elle t’intéresse.

1 « J'aime »

ça repond parfaitement à la demande.

Merci beaucoup.

1 « J'aime »