Anfängerleitfaden zum Web Scraping in Python (mit BeautifulSoup)

Inhalt

Überblick

  • Lernen Sie Web-Scraping in Python mit der BeautifulSoup-Bibliothek
  • Web Scraping ist eine nützliche Technik, um unstrukturierte Daten im Web in strukturierte Daten umzuwandeln
  • BeautifulSoup ist eine effiziente Bibliothek, die in Python verfügbar ist, um andere Web-Scratches als urllib
  • Für Web-Scraping in Python sind Grundkenntnisse in HTML und HTML-Tags erforderlich

Einführung

Die Notwendigkeit und Bedeutung des Extrahierens von Daten aus dem Web wird immer stärker und klarer.. Alle paar Wochen, Ich befinde mich in einer Situation, in der wir Daten aus dem Web extrahieren müssen, um ein Modell für maschinelles Lernen erstellen.

Zum Beispiel, la semana pasada estábamos pensando en crear un Index de picor y sentimiento sobre varios Data Science-Kurse im Internet verfügbar. Dies würde nicht nur die Suche nach neuen Kursen erfordern!, Suchen Sie aber auch im Web nach Ihren Bewertungen und fassen Sie sie dann in einigen Metriken zusammen!

Das ist eines der Probleme / Produkte, deren Wirksamkeit mehr von Web-Scraping und Informationsextraktion abhängt (Datensammlung) welche der Techniken verwendet werden, um die Daten zusammenzufassen.

Notiz: Zu diesem Artikel haben wir auch einen kostenlosen Kurs erstellt: Einführung in Web-Scraping mit Python. Dieses strukturierte Format hilft Ihnen, besser zu lernen.

Möglichkeiten zum Extrahieren von Informationen aus dem Web

Es gibt mehrere Möglichkeiten, Informationen aus dem Web zu extrahieren. Gebrauch von APIs ist wahrscheinlich der beste Weg, um Daten von einer Website zu extrahieren. Fast alle großen Websites wie Twitter, Facebook, Google, Twitter, StackOverflow bietet APIs, um strukturierter auf Ihre Daten zuzugreifen. Wenn Sie über eine API bekommen, was Sie brauchen, ist fast immer der bevorzugte Ansatz gegenüber Web-Scraping. Denn wenn Sie auf strukturierte Daten des Anbieters zugreifen, Warum sollten Sie eine Engine erstellen, um dieselben Informationen zu extrahieren??

Leider, nicht alle Websites bieten eine API. Manche tun es, weil sie nicht wollen, dass die Leser viele Informationen auf strukturierte Weise extrahieren, während andere aufgrund mangelnder technischer Kenntnisse keine API bereitstellen. Was machst du in diesen Fällen? Gut, Wir müssen die Website kratzen, um die Informationen zu erhalten.

Möglicherweise gibt es andere Möglichkeiten wie RSS-Feeds, aber seine Verwendung ist begrenzt und, Daher, Ich werde sie hier nicht in die Diskussion einbeziehen.

admin-ajax-6170451

Was ist Web-Scraping??

Web Scraping ist eine Computersoftwaretechnik zum Extrahieren von Informationen aus Websites. Diese Technik konzentriert sich hauptsächlich auf die Transformation unstrukturierter Daten (HTML-Format) im Web in strukturierten Daten (Datenbank u hoja de cálculo).

Sie können Web-Scraping auf verschiedene Arten durchführen, inklusive der Nutzung von Google Docs in fast allen Programmiersprachen. Ich würde mich wegen seiner Einfachheit und seines reichhaltigen Ökosystems an Python wenden. Tiene una biblioteca conocida como ‚SchöneSuppe‘ was hilft bei dieser aufgabe. In diesem Artikel, Ich zeige Ihnen den einfachsten Weg, Web-Scraping mit Python-Programmierung zu lernen.

Für diejenigen unter Ihnen, die eine nicht-programmierbare Möglichkeit zum Extrahieren von Informationen aus Webseiten benötigen, sie können auch gucken import.io . Bietet eine GUI-geführte Schnittstelle zum Ausführen aller grundlegenden Web-Scraping-Vorgänge. Hacker können diesen Artikel weiterlesen!!

Bibliotheken, die für Web-Scraping benötigt werden

Wie wir wissen, Felshaken ist eine Open-Source-Programmiersprache. Sie können viele Bibliotheken finden, um eine Funktion auszuführen. Deswegen, Sie müssen die beste Bibliothek finden, die Sie verwenden können. ich bevorzuge Schöne Suppe (Python-Bibliothek), da es einfach und intuitiv zu arbeiten ist. Genau, Ich werde zwei Python-Module verwenden, um Daten zu kratzen:

  • Urllib2: Es ist ein Python-Modul, mit dem URLs gesucht werden können. Definieren Sie Funktionen und Klassen, um bei URL-Aktionen zu helfen (einfache und summarische Authentifizierung, Weiterleitungen, Kekse, etc.). Für mehr Details, siehe die Dokumentationsseite. Notiz: urllib2 ist der Name der Bibliothek, die in Python enthalten ist 2. Stattdessen, Sie können die in Python enthaltene urllib.request-Bibliothek verwenden 3. Die Bibliothek urllib.request funktioniert genauso wie urllib.request in Python 2. Denn es ist schon einbezogen keine Installation erforderlich.
  • SchöneSuppe: Es ist ein unglaubliches Werkzeug, um Informationen aus einer Webseite zu extrahieren. Sie können damit Tabellen extrahieren, Listen, Absatz und Sie können auch Filter setzen, um Informationen aus Webseiten zu extrahieren. In diesem Artikel, Wir werden die neueste Version von BeautifulSoup verwenden 4. Sie können die Installationsanweisungen in Ihrem Dokumentationsseite.

BeautifulSoup durchsucht die Website nicht für uns. Deswegen, Ich verwende urllib2 in Kombination mit der BeautifulSoup-Bibliothek.

Felshaken hat neben BeatifulSoup noch mehrere andere Optionen für das HTML-Scraping. Hier sind einige andere:

Grundlegendes Konzept: Machen Sie sich mit HTML vertraut (Etiketten)

Während wir das robuste Web machen, Wir kümmern uns um HTML-Tags. Deswegen, wir müssen sie gut verstehen. Wenn Sie bereits die Grundlagen von HTML kennen, Sie können diesen Abschnitt überspringen. Unten ist die grundlegende Syntax von HTML:html-7707012Diese Syntax hat mehrere Tags, die unten beschrieben werden:

  1. : HTML-Dokumente müssen mit einer Typdeklaration beginnen
  2. Das HTML-Dokument befindet sich zwischen Ja
  3. Der sichtbare Teil des HTML-Dokuments liegt zwischen Ja
  4. HTML-Header werden mit dem

    zu

    Etiketten

  5. HTML-Absätze werden mit dem . definiert

    Etikett

Andere nützliche HTML-Tags sind:

  1. HTML-Links werden mit dem Etikett, „<ein href =„HTTP://www.test.com“>Dies ist ein Link für test.com</ein> ”
  2. HTML-Tabellen werden definiert mit , Reihe wie
    und die Zeilen werden in Daten aufgeteilt wie

    steht im Etikett

    Tisch-9656416
  3. Die HTML-Liste beginnt mit
  4. )
    Struktur-6561345Über, Sie werden vielleicht feststellen, dass das zweite Element von

    , Nein

    , also müssen wir uns darum kümmern. Jetzt, um auf den Wert jedes Elements zuzugreifen, Wir werden die Option nutzen „suchen nach (Text = wahr)“ mit jedem Element. Sehen wir uns den Code an:
    #Listen erstellen
    A=[]
    B=[]
    C=[]
    D=[]
    E=[]
    F=[]
    G=[]
    für Zeile in right_table.findAll("tr"):
        Zellen = row.findAll('td')
        States=row.findAll('th') #So speichern Sie die Daten der zweiten Spalte
        wenn len(Zellen)==6: #Nur Tabellenkörper extrahieren, keine Überschrift
            A.anhängen(Zellen[0].finden(text=wahr))
            B.anhängen(Zustände[0].finden(text=wahr))
            C.anhängen(Zellen[1].finden(text=wahr))
            D.anhängen(Zellen[2].finden(text=wahr))
            E.anhängen(Zellen[3].finden(text=wahr))
            F.anhängen(Zellen[4].finden(text=wahr))
            G.anhängen(Zellen[5].finden(text=wahr))
    #Pandas importieren, um die Liste in einen Datenrahmen zu konvertieren
    Pandas als pd importieren
    df=pd.DataFrame(EIN,Spalten=['Number'])
    df['State/UT']=B
    df['Admin_Capital']=C
    df[''Legislative_Capital']=D
    df['Judiciary_Capital']= E
    df['Year_Capital']=F
    df['Former_Capital']=G
    df
    

    Schließlich, wir haben daten im datenrahmen:
    Ausgang-6122649
    Auf die gleiche Weise, Sie können andere Arten von Web-Scraping mit durchführen „Schöne Suppe“. Dadurch wird Ihr manueller Aufwand zum Sammeln von Webseitendaten reduziert.. Sie können sich auch die anderen Attribute wie .parent . ansehen, .Inhalt, .Nachkommen y .next_sibling, .prev_sibling und verschiedene Attribute zum Navigieren mit Tag-Namen. Diese helfen Ihnen, Webseiten effektiv zu entfernen.

    Aber, Warum kann ich keine Regex verwenden??

    Jetzt, wenn du reguläre Ausdrücke kennst, Sie denken vielleicht, dass Sie mit Regex Code schreiben können, der dasselbe für Sie tun kann. Diese Frage hatte ich auf jeden Fall. Nach meiner Erfahrung mit BeautifulSoup und Regex das gleiche zu tun, Ich entdeckte:

    • In BeautifulSoup geschriebener Code ist normalerweise robuster als Code, der mit regulären Ausdrücken geschrieben wurde. Codes, die mit regulären Ausdrücken geschrieben wurden, sollten bei Änderungen an den Seiten geändert werden. Das braucht sogar BeautifulSoup in manchen Fällen, nur ist BeautifulSoup relativ besser.
    • Reguläre Ausdrücke sind viel schneller als BeautifulSoup, im Allgemeinen um den Faktor 100 um das gleiche Ergebnis zu liefern.

    Deswegen, es kommt auf Geschwindigkeit versus Code-Robustheit an und hier gibt es keinen universellen Gewinner. Wenn die gesuchten Informationen mit einfachen Regex-Deklarationen extrahiert werden können, du musst weitermachen und sie benutzen. Für fast jede komplexe Aufgabe, Ich empfehle BeautifulSoup im Allgemeinen mehr als Regex.

    Schlussbemerkung

    In diesem Artikel, Wir analysieren die von ihnen verwendeten Web-Scraping-Methoden „SchöneSuppe“ Ja „urllib2“ und Python. Wir gingen auch die Grundlagen von HTML durch und führten Schritt für Schritt Web-Scraping durch, während wir eine Herausforderung lösten.. Ich empfehle Ihnen, dies zu üben und es zu verwenden, um Daten von Webseiten zu sammeln.

    Findest du diesen Artikel hilfreich? Teile deine Meinung / Gedanken im Kommentarbereich unten.

    Notiz: Zu diesem Artikel haben wir auch einen kostenlosen Kurs erstellt: Einführung in Web-Scraping mit Python. Dieses strukturierte Format hilft Ihnen, besser zu lernen.

    Wenn Ihnen das, was Sie gerade gelesen haben, gefällt und Sie weiter über Analytics lernen möchten, abonnieren Sie unsere E-Mails, Folge uns auf Twitter oder wie bei uns Seite auf Facebook.

    Abonniere unseren Newsletter

    Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

    Datenlautsprecher