Catégories
formations

Scrapping en 5mn avec python et Google Colab

Vous vous demandez certainement comment faire de la veille, plus efficacement et partager vos trouvailles ou infos plus rapidement.

Dans un premier temps, je peux m’abonner, à de multiples sites de news, concernant les domaines que je veux suivre, et attendre de recevoir chaque articles, dans mes emails, c’est long et fastidieux !
Je voulais trouver un moyen  plus simple et le plus rapide d’accomplir cette tâche.

Et c’est Python, qui va me permettre cela, je vais pouvoir avec quelques lignes de codes, lui demander d’aller récupérer, les articles sur un ou plusieurs sites et de me sauvegarder tout cela dans un fichier CSV.
Il existe des plugins en Python très connu qui auraient pu m’aider à faire cela, l’un étant BeautifulSoup . C’est un excellent plugin, mais je ne voulais pas me soucier des structures html et du Dom (Document Object Model ) de chaque plate-forme.

Quelques recherches sur mon ami Google, m’ont permis de trouver une solution simple à mon problème. 
Un module simple et qui fait cela : Newspaper3k !

Je vais donc vous montrer comment scrapper rapidement un tas d’articles de différent sites avec l’aide de Google Colab et d’un script Python simple.

Qu’est-ce que Google Colab ?

Google Colab est un environnement de notebook Jupyter hébergé qui est gratuit et ne nécessite aucune configuration. C’est un service cloud gratuit et il prend en charge le GPU gratuitement !

scrapping google colab et python

Vous pouvez simplement améliorer vos compétences en codage de langage de programmation Python  ou développer des applications d’apprentissage en profondeur à l’aide de bibliothèques populaires telles que Keras , TensorFlow , PyTorch et OpenCV .

Maintenant, toutes ces bibliothèques sont déjà installées pour vous. Il n’est donc pas nécessaire de passer par les tracas liés à l’installation des bibliothèques. Passez directement au codage !

De plus il est interconnectable avec votre compte Gmail et vous pourrez donc partager vos extractions vers votre Drive ou collaborer avec d’autres utilisateurs sur vos scripts.

Comment utiliser Newspaper3k ?

Tout d’abord, nous devons installer le plugin python dans votre environnement Google Colab.

Créer un nouveau Notebook et nommez le : ex –> Scrapnews

Chacune des commandes seront à lancer dans une cellule matérialisé,
par le petit bouton play ( voir photo ci dessous ).

google colab lancement d'un notebook
$ pip install newspaper3k

Nous allons installer , newspaper3K,
écrivez la commande ci dessus et finissez par le bouton [ play ]
l’installation démarre avec quelques lignes de commandes qui s’affichent.

installation de newpaper3k
installation des paquets…

Nous allons maintenant commencer à coder notre Scrappeur …

Copier le code suivant ci-dessous dans une nouvelle cellule, pour ce faire cliquez sur le bouton +code dans le menu principale et finissez par le bouton [ play ].

import newspaper
from newspaper import Article
from newspaper import Source
from newspaper import news_pool
import pandas as pd

Si vous n’avez pas de messages d’erreur, c’est que les paquets sont bien installés.
Maintenant créez une nouvelle cellule, et copier le code suivant ci-dessous, pour ce faire cliquez sur le bouton +code dans le menu principale.

Comment télécharger plusieurs articles en simultanés ?

Plusieurs étapes seront nécessaires pour arriver à notre but :

  • Installation des plugins utiles
  • Liste des différents sites pour lesquels je veux récupérer mes articles
  • Placez les sources dans une variable « papers »
  • Création d’un tableau avec toutes les news
  • Exporter le résultat au format CSV

Attention l’indentation est très importante en Pyhton

# installation des plugins utiles
# Différents sites pour lesquels je veux récupérer mes articles
gamespot = newspaper.build('https://www.blogdumoderateur.com/dossier/google', memoize_articles=False)
bbc = newspaper.build("https://gsuitefr.blogspot.com", memoize_articles=False)

# Place les sources dans une variable "papers"
papers = [gamespot, bbc]

# Je ne veux récuperer que 4 articles / sources

# Une fois télécharger je stock les news dans un tableau finale 

news_pool.set(papers, threads_per_source=4)

news_pool.join()

# Creation du tableau avec toutes  les news
final_df = pd.DataFrame()

# Possibilité d'ajouter une limite, préférable pour ne pas avoir un Exceeded Time Error

limit = 100

for source in papers:
    # Je crée une boucle qui récupére chaques titre, texte et url de mes sources
    list_title = []
    list_text = []
    list_source =[]

    count = 0

    for article_extract in source.articles:
        article_extract.parse()

        if count > limit: 
# Je luis donne ma limite paramétrer plus haut
            break
        # j'extrait les éléments à afficher
        list_title.append(article_extract.title)
        list_text.append(article_extract.text)
        list_source.append(article_extract.url)
        count +=1
     

    temp_df = pd.DataFrame({'Title': list_title, 'Text': list_text, 'Source': list_source})
    # J'ajoute le tout à mon tableau final
    final_df = final_df.append(temp_df, ignore_index = True)
    
# J'exporte le resultat au format CSV
final_df.to_csv('mes_articles.csv')
Cliquez sur le fichier CSV créer afin de le visulaliser directement dans Google Colab

…. Et voilà ! 
Notre scrappeur multi thread est actif, vous pourrez aisément le perfectionner, récuperer les images également etc …

Le lien Google Colab pour récuperer les sources :


Bon Scrapping !!!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *