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

Réseau/Web Python Discussion :

Web scrapping avec Python


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 30
    Points : 13
    Points
    13
    Par défaut Web scrapping avec Python
    Bonjour,

    A titre d’exercice je voudrais récupérer des formats d’emails dans une page web.
    A ce stade je peux à partir de mots clés, trouver une page web dans Google, la stocker en tant qu'objet BeautifulSoup.

    Je n'ai pas besoin d'avoir l'adresse exactement délimitée, mais simplement sa forme générale pour un examen visuel.
    Mon idée ce serait d’identifier les @ de la page. Puis d'extraire une chaine de caractères de longueur 40 environ centrée sur l'arobase.

    Faut-il transformer l'objet de type BeautifulSoup en texte ou existe t'il d'autres fonctions de plus haut niveau ?

    Cordialement,

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 095
    Points : 9 581
    Points
    9 581
    Par défaut
    hello,
    pour extraire des adresses email dans un texte on peut utiliser les expressions régulières. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> import re
    >>> line = "should we use regex more often? let me know at  321dsasdsa@dasdsa.com.lol or dadaads@dsdds.com"
    >>> match = re.findall(r'[\w.+-]+@[\w-]+\.[\w.-]+', line)
    >>> match
    ['321dsasdsa@dasdsa.com.lol', 'dadaads@dsdds.com']
    Ami calmant, J.P

  3. #3
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 30
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    La réponse à la question

    should we use regex more often?
    est oui !

    Merci

  4. #4
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 30
    Points : 13
    Points
    13
    Par défaut Web scrapping avec Python
    Bonjour,

    J’ai poursuivi le développement du code qui fonctionne.

    1 - La mise au point me vaut cependant une erreur
    « HTTP Error 429: Too Many Requests »
    Pourtant j’ai mis des pauses généreuses dans les instructions search et urlopen (10 secondes + random)
    Que puis-je faire ?

    2 - Voici la séquence pour la récupération des pages web et de leur contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            try:
            	page= urllib.request.urlopen(j,timeout=(10+random.uniform(0, 2)))
           	except:
             	page= " "
           	try:
             	soup=bs(page, features="html.parser")
             	res = soup.get_text()
           	except:
             	res = " "
    « j » est l’adresse de la page web.

    Le premier try/except évite une erreur sur les pages dont la lecture par bs (beautifulsoup) nécessite un mot de passe.

    J’ai inséré le second try/except parce que j’avais une autre erreur sur un mauvais décodage des pages.

    Il me reste quelques avertissements dont je suppose qu’ils sont liés à cette erreur :

    “Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER. “.
    Il apparaissait aussi en warning des séquences de textes avec des symboles bizarres (carrés, ronds,...)
    Pour l’instant je ne peux plus retrouver le code de l’erreur pour la raison expliquée au 1.

    Y’a-t'il un moyen plus propre pour éviter les problèmes de décodage ?

    3 – Je me suis rendu compte que la création d’un array vide (tableau = []) ne permettait pas d’indexer ultérieurement des positions des cet array (tableau[i] = expression)
    Il a fallu que je crée un array de dimension n avec du texte vide (« ») pour pouvoir indexer les cellules par la suite.
    Ce n’est pas grave mais y aurait-il une méthode plus élégante ?

    Cordialement,

  5. #5
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 30
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Je fais remonter ce sujet.

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 095
    Points : 9 581
    Points
    9 581
    Par défaut
    Hello,
    Citation Envoyé par langlois13 Voir le message
    1 - La mise au point me vaut cependant une erreur
    « HTTP Error 429: Too Many Requests »
    Pourtant j’ai mis des pauses généreuses dans les instructions search et urlopen (10 secondes + random)
    Que puis-je faire ?
    sur des sites protégés contre les robots l n' y a pas que la fréquence de requêtes qui est vérifiée mais aussi le nombre de requêtes par adresse I.P ( par exemple 10 ou 100). Le seul moyen de contourner cette limitation c'est de passer par des proxys ( sorte d'intermédiaires dont l'adresse I.P est vue sur le site cible à la place de l'adresse I.P source de la requête).
    Ami calmant, J.P

Discussions similaires

  1. [Python 3.X] Envoi partiel d'un email, Scrapping avec Python
    Par Invité dans le forum Général Python
    Réponses: 11
    Dernier message: 14/11/2021, 10h24
  2. comment developper une page web avec python
    Par moezcool dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 27/06/2008, 14h45
  3. Affichage dynamique Web de courbes avec Python
    Par iphilout dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 22/03/2008, 10h59
  4. Automatiser les tâches Web avec Python
    Par mpereg dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 07/06/2007, 23h49
  5. Réponses: 2
    Dernier message: 19/12/2005, 14h15

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