Guide du débutant sur le grattage Web en Python (en utilisant BeautifulSoup)

Contenu

Vue d'ensemble

  • Apprendre le web scraping en Python à l'aide de la bibliothèque BeautifulSoup
  • Le Web Scraping est une technique utile pour convertir des données non structurées sur le Web en données structurées
  • BeautifulSoup est une bibliothèque efficace disponible en Python pour effectuer des scratchs Web autres que urllib
  • Une connaissance de base des balises HTML et HTML est nécessaire pour faire du web scraping en Python

introduction

Le besoin et l'importance d'extraire des données du Web deviennent de plus en plus évidents.. Toutes les quelques semaines, Je suis dans une situation où nous devons extraire des données du Web pour construire un modèle d'apprentissage automatique.

Par exemple, la semaine dernière, nous pensions créer un indice de démangeaison et de sentiment sur plusieurs cours de science des données disponible sur internet. Cela ne nécessiterait pas seulement de trouver de nouveaux cours !, mais aussi rechercher sur le Web vos avis, puis les résumer en quelques métriques!

C'est l'un des problèmes / des produits dont l'efficacité dépend davantage du web scraping et de l'extraction d'informations (collecte de données) laquelle des techniques utilisées pour résumer les données.

Noter: Nous avons également créé un cours gratuit pour cet article: Introduction au web scraping avec Python. Ce format structuré vous aidera à mieux apprendre.

Façons d'extraire des informations du Web

Il existe plusieurs façons d'extraire des informations du Web. Utilisation de APIs étant probablement le meilleur moyen d'extraire des données d'un site Web. Presque tous les grands sites Web comme Twitter, Facebook, Google, Twitter, StackOverflow fournit des API pour accéder à vos données de manière plus structurée. Si vous pouvez obtenir ce dont vous avez besoin via une API, est presque toujours l'approche préférée au grattage Web. En effet, si vous accédez aux données structurées du fournisseur, Pourquoi voudriez-vous créer un moteur pour extraire les mêmes informations?

Malheureusement, tous les sites Web ne fournissent pas d'API. Certains le font parce qu'ils ne veulent pas que les lecteurs extraient beaucoup d'informations de manière structurée, tandis que d'autres ne fournissent pas d'API en raison d'un manque de connaissances techniques. Que faites-vous dans ces cas? Bon, nous devons gratter le site Web pour obtenir les informations.

Il peut y avoir d'autres moyens comme les flux RSS, mais son utilisation est limitée et, donc, Je ne les inclurai pas dans la discussion ici.

admin-ajax-6170451

Qu'est-ce que le grattage Web?

Le grattage Web est une technique logicielle informatique permettant d'extraire des informations de sites Web.. Cette technique est principalement axée sur la transformation de données non structurées (Format HTML) sur le web en données structurées (base de données ou feuille de calcul).

Vous pouvez effectuer le grattage Web de différentes manières, y compris l'utilisation de Google Docs dans presque tous les langages de programmation. Je me tournerais vers Python pour sa facilité et son écosystème riche. Il a une bibliothèque connue sous le nom de ‘BelleSoupe’ ce qui aide dans cette tâche. Dans cet article, je vais vous montrer le moyen le plus simple d'apprendre le web scraping en utilisant la programmation python.

Pour ceux d'entre vous qui ont besoin d'un moyen sans programmation pour extraire des informations de pages Web, ils peuvent aussi regarder import.io . Fournit une interface guidée par GUI pour effectuer toutes les opérations de grattage Web de base. Les pirates peuvent continuer à lire cet article !!

Bibliothèques nécessaires pour le web scraping

Comme nous le savons, Piton est un langage de programmation open source. Vous pouvez trouver de nombreuses bibliothèques pour exécuter une fonction. Donc, vous devez trouver la meilleure bibliothèque à utiliser. Je préfère Belle soupe (Bibliothèque Python), car il est facile et intuitif de travailler dessus. Précisément, je vais utiliser deux modules python pour gratter les données:

  • URLlib2: C'est un module Python qui peut être utilisé pour rechercher des URL. Définir des fonctions et des classes pour aider avec les actions d'URL (authentification de base et sommaire, redirige, biscuits, etc.). Pour plus de détails, voir le page de documentation. Noter: urllib2 est le nom de la bibliothèque incluse dans Python 2. À sa place, vous pouvez utiliser la bibliothèque urllib.request incluse avec python 3. La bibliothèque urllib.request fonctionne de la même manière que urllib.request fonctionne en Python 2. Parce que c'est déjà inclus pas besoin d'installer.
  • BelleSoupe: C'est un outil incroyable pour extraire des informations d'une page Web. Vous pouvez l'utiliser pour extraire des tables, listes, paragraphe et vous pouvez également mettre des filtres pour extraire des informations des pages Web. Dans cet article, nous utiliserons la dernière version de BeautifulSoup 4. Vous pouvez vous référer aux instructions d'installation dans votre page de documentation.

BeautifulSoup ne recherche pas le site Web pour nous. Pour cela, J'utilise urllib2 en combinaison avec la bibliothèque BeautifulSoup.

Piton a plusieurs autres options pour le grattage HTML en plus de BeatifulSoup. en voici d'autres:

Des concepts basiques: se familiariser avec HTML (Étiquettes)

Pendant que nous faisons le web robuste, nous nous occupons des balises html. Donc, il faut bien les comprendre. Si vous connaissez déjà les bases du HTML, vous pouvez sauter cette section. Voici la syntaxe de base du HTML:html-7707012Cette syntaxe a plusieurs balises qui sont détaillées ci-dessous:

  1. : Les documents HTML doivent commencer par une déclaration de type
  2. Le document HTML est contenu entre Oui
  3. La partie visible du document HTML se situe entre Oui
  4. Les en-têtes HTML sont définis avec le

    à

    Étiquettes

  5. Les paragraphes HTML sont définis avec le

    étiqueter

D'autres balises HTML utiles sont:

  1. Les liens HTML sont définis avec le étiqueter, « <une href =« Http://www.test.com »>Ceci est un lien pour test.com</une> "
  2. Les tableaux HTML sont définis avec , rang comme
    et les lignes sont divisées en données comme

    est à l'intérieur de l'étiquette

    tableau-9656416
  3. La liste HTML commence par
  4. )
    structure-6561345Dessus, vous remarquerez peut-être que le deuxième élément de

    , non

    , donc il faut s'en occuper. À présent, pour accéder à la valeur de chaque élément, nous utiliserons l'option « chercher (texte = vrai) » avec chaque élément. Voyons le code:
    #Générer des listes
    A=[]
    B=[]
    C=[]
    D=[]
    E=[]
    F=[]
    G=[]
    pour la ligne dans right_table.findAll("tr"):
        cellules = ligne.findAll('td')
        états=ligne.findAll('th') #Pour stocker les données de la deuxième colonne
        si len(cellules)==6: #Extraire uniquement le corps du tableau sans titre
            A.append(cellules[0].trouve(texte=Vrai))
            B.append(États[0].trouve(texte=Vrai))
            C.append(cellules[1].trouve(texte=Vrai))
            D.append(cellules[2].trouve(texte=Vrai))
            E.append(cellules[3].trouve(texte=Vrai))
            F.append(cellules[4].trouve(texte=Vrai))
            G.append(cellules[5].trouve(texte=Vrai))
    #importer des pandas pour convertir la liste en bloc de données
    importer des pandas au format pd
    df=pd.DataFrame(UNE,colonnes=['Nombre'])
    df['État/UT']=B
    df['Capital_Admin']=C
    df['Capital_Législative']=D
    df['Capital_Judiciaire']= E
    df['Année_Capitale']=F
    df['Ancienne_Capitale']=G
    df
    

    Finalement, nous avons des données dans le bloc de données:
    sortie-6122649
    De la même manière, vous pouvez effectuer d'autres types de grattage Web en utilisant « Belle soupe". Cela réduira vos efforts manuels pour collecter les données des pages Web.. Vous pouvez également regarder les autres attributs comme .parent, .Contenu, .descendants y .next_sibling, .prev_sibling et divers attributs pour naviguer en utilisant le nom de la balise. Ceux-ci vous aideront à supprimer efficacement les pages Web.

    Mais, Pourquoi ne puis-je pas utiliser regex?

    À présent, si vous connaissez les expressions régulières, vous pensez peut-être que vous pouvez écrire du code à l'aide de regex qui peut faire la même chose pour vous. J'avais certainement cette question. Dans mon expérience avec BeautifulSoup et regex faire la même chose, J'ai découvert:

    • Le code écrit dans BeautifulSoup est généralement plus robuste que le code écrit avec des expressions régulières. Les codes écrits avec des expressions régulières doivent être modifiés avec toute modification des pages. Même BeautifulSoup en a besoin dans certains cas, c'est juste que BeautifulSoup est relativement mieux.
    • Les expressions régulières sont beaucoup plus rapides que BeautifulSoup, généralement par un facteur de 100 donner le même résultat.

    Donc, cela se résume à la vitesse par rapport à la robustesse du code et il n'y a pas de gagnant universel ici. Si les informations que vous recherchez peuvent être extraites avec de simples déclarations regex, vous devez aller de l'avant et les utiliser. Pour presque tous les travaux complexes, Je recommande généralement BeautifulSoup plus que regex.

    Note finale

    Dans cet article, nous analysons les méthodes de grattage Web qu'ils utilisent « BelleSoupe » Oui « urllib2 » et Python. Nous avons également étudié les bases du HTML et effectué un grattage Web étape par étape tout en résolvant un défi.. Je vous recommande de pratiquer cela et de l'utiliser pour collecter des données à partir de pages Web.

    Trouvez-vous utile cet article? Partagez vos opinions / pensées dans la section des commentaires ci-dessous.

    Noter: Nous avons également créé un cours gratuit pour cet article: Introduction au web scraping avec Python. Ce format structuré vous aidera à mieux apprendre.

    Si vous aimez ce que vous venez de lire et souhaitez continuer à apprendre sur l'analyse, abonnez-vous à nos e-mails, Suivez-nous sur Twitter ou comme le nôtre page le Facebook.

    Abonnez-vous à notre newsletter

    Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

    Haut-parleur de données