IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

probl�me scraping page web et table


Sujet :

Python

  1. #1
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Par d�faut probl�me scraping page web et table
    Bonjour � toutes et tous,

    je d�bute sur python et dans le cadre de mon projet, je souhaite r�cup�rer les occurrences de plusieurs page web d'un site sp�cifique.
    A l'inspection de la page, j'arrive a identifier les tags qui m�int�ressent, et dans un premier temps, j'essai, pas � pas, de r�cup�rer la totalit�.

    Mon souci est que soit je r�cup�re une erreur d'attribut, soit un r�sultat vide comme ceci [], et je ne comprends pas la raison.

    a terme, je souhaite r�cup�rer pour chaque page de chaque ann�e les occurrences, et plus pr�cis�ment celles des types "UAVs"
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import requests
    from bs4 import BeautifulSoup as bs
    url = "https://aviation-safety.net/wikibase/dblist.php?Year=2023"
    page = requests.get(url)
    soup = bs(page.content, 'html.parser')
     
    tables = soup.find_all("tr", class_="list")
    print(tables)
    pourriez vous s'il vous plait m'aider et un peu m'expliquer la raison pour laquelle j'ai comme retour [] alors que la page est pleine ?

    par avance merci pour votre r�ponse.
    pythonnement

  2. #2
    Expert confirm�
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    D�cembre 2008
    Messages
    4 246
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 4 246
    Par d�faut
    Hello,
    la requ�te sur ton url renvoie :
    Sorry, something went wrong. You can contact us via [email protected], should the problem persist.
    le serveur doit d�tecter que c'est une requ�te qui provient d'un syst�me automatique et interdit l'acc�s : il faut peut-�tre rajouter des param�tres � la requ�te pour faire croire que celle-ci provient d'un navigateur ou alors utiliser un module comme selenium qui pilote un navigateur.
    tu peux essayer :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}
    url = "https://aviation-safety.net/wikibase/dblist.php?Year=2023"
    page = requests.get(url,headers=headers)
    Ami calmant, J.P

  3. #3
    Expert confirm� Avatar de papajoker
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ni�vre (Bourgogne)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par d�faut
    bonjour
    Citation Envoy� par jurassic pork Voir le message
    e serveur doit d�tecter que
    Le plus simple pour voir s'il y a restriction, est de faire une requ�te curl dans son terminal et afficher le r�sultat brut de la requete python (site interdit � certaines signatures ?)
    Ici, utiliser requests � la place du standard urllib


    c'est une requ�te qui provient d'un syst�me automatique et interdit l'acc�s : il faut ...

    Si je mets un panneau chez moi "d�fense d'entrer" c'est pour tout le monde !!! m�me ceux qui arrivent � rentrer avec un bulldozer.
    Apr�s avoir �crit "c'est interdit", dire � une personne qu'elle peut contourner/forcer avec un outil, cela ne te choque pas ?

  4. #4
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Par d�faut
    Citation Envoy� par jurassic pork Voir le message
    Hello,
    la requ�te sur ton url renvoie :

    le serveur doit d�tecter que c'est une requ�te qui provient d'un syst�me automatique et interdit l'acc�s : il faut peut-�tre rajouter des param�tres � la requ�te pour faire croire que celle-ci provient d'un navigateur ou alors utiliser un module comme selenium qui pilote un navigateur.
    tu peux essayer :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}
    url = "https://aviation-safety.net/wikibase/dblist.php?Year=2023"
    page = requests.get(url,headers=headers)
    Ami calmant, J.P
    Merci pour v�tre r�ponse.
    En effet, apr�s avoir ins�r� votre proposition de solution, et ajouter un traitement d'erreur (AttributeError), voici mon code en retour.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    import requests
    from bs4 import BeautifulSoup as bs
     
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}
    url = "https://aviation-safety.net/wikibase/dblist.php?Year=2023"
    page = requests.get(url, headers=headers)
    soup = bs(page.content, 'html.parser')
    tables = soup.find_all("tr", class_="list")
     
    #Boucle pour chaque ligne
    for row in tables:
        columns = row.find_all("td", class_="list")
        for column in columns:
            #Gestion de l'exception AttributeError
            if column.attribute:
                print("") #cas si AttributeError
            else:
                print(column.text) #cas si ok
    maintenant, ma prochaine �volution va consister � ne selectionner que les colonnes de 1 � 4 et la 6�me et aussi de r�p�ter l'operation pour chaque pages et ann�e existante...

  5. #5
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Septembre 2018
    Messages
    150
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 150
    Par d�faut
    Citation Envoy� par papajoker Voir le message
    bonjour
    Le plus simple pour voir s'il y a restriction, est de faire une requ�te curl dans son terminal et afficher le r�sultat brut de la requete python (site interdit � certaines signatures ?)
    Ici, utiliser requests � la place du standard urllib




    Si je mets un panneau chez moi "d�fense d'entrer" c'est pour tout le monde !!! m�me ceux qui arrivent � rentrer avec un bulldozer.
    Apr�s avoir �crit "c'est interdit", dire � une personne qu'elle peut contourner/forcer avec un outil, cela ne te choque pas ?
    @papajoker, je comprends tout a fait et aussi que si le concepteur de ce site a marqu� "sorry, something went wrong...." c'est que potentiellement il ne souhaite pas �tre responsable de l'utilisation qu'il peut �tre fait de la database.

    Autrement je vous remercie pour votre r�ponse. pourriez-vous m'en dire plus sur le roll et weird ? ou puis-je/pourrais-je les placer dans mon code s'il vous plait?

Discussions similaires

  1. Probl�me affichage page web
    Par pitite dans le forum Zend Framework
    R�ponses: 1
    Dernier message: 20/03/2013, 15h20
  2. R�ponses: 2
    Dernier message: 31/01/2009, 17h44
  3. [web] Probl�me affichage page web
    Par benji2642 dans le forum MATLAB
    R�ponses: 2
    Dernier message: 12/04/2007, 02h00
  4. Probl�me affichage page web html ou htm
    Par metmac1 dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 12
    Dernier message: 08/03/2007, 21h15
  5. R�ponses: 3
    Dernier message: 04/11/2006, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo