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,
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:
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,