Heim > Backend-Entwicklung > Python-Tutorial > Web Scraping und Parsing von HTML in Python mit Beautiful Soup

Web Scraping und Parsing von HTML in Python mit Beautiful Soup

Linda Hamilton
Freigeben: 2025-01-10 12:15:41
Original
997 Leute haben es durchsucht

Nutzen Sie die Kraft des Web Scraping mit Python und Beautiful Soup: Ein MIDI-Musikbeispiel

Das Internet ist eine Schatzkammer an Informationen, aber der programmgesteuerte Zugriff darauf kann ohne dedizierte APIs eine Herausforderung sein. Die Beautiful Soup-Bibliothek von Python bietet eine leistungsstarke Lösung, mit der Sie Daten direkt von Webseiten extrahieren und analysieren können.

Lassen Sie uns dies untersuchen, indem wir MIDI-Daten extrahieren, um ein Magenta-Neuronales Netzwerk für die Erzeugung klassischer Nintendo-Musik zu trainieren. Wir beziehen MIDI-Dateien aus dem Video Game Music Archive (VGM).

Einrichten Ihrer Umgebung

Stellen Sie sicher, dass Python 3 und pip installiert sind. Es ist wichtig, eine virtuelle Umgebung zu erstellen und zu aktivieren, bevor Abhängigkeiten installiert werden:

<code class="language-bash">pip install requests==2.22.0 beautifulsoup4==4.8.1</code>
Nach dem Login kopieren
Nach dem Login kopieren

Wir verwenden Beautiful Soup 4 (Beautiful Soup 3 wird nicht mehr gepflegt).

Scraping und Parsing mit Anfragen und schöner Suppe

Zuerst holen wir uns den HTML-Code und erstellen ein BeautifulSoup-Objekt:

<code class="language-python">import requests
from bs4 import BeautifulSoup

vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')</code>
Nach dem Login kopieren

Das soup-Objekt ermöglicht die Navigation im HTML. soup.title gibt den Seitentitel an; print(soup.get_text()) zeigt den gesamten Text an.

Die Kraft der schönen Suppe meistern

Die Methoden find() und find_all() sind unerlässlich. soup.find() zielt auf einzelne Elemente ab (z. B. erhält soup.find(id='banner_ad').text Banner-Werbetext). soup.find_all() iteriert durch mehrere Elemente. Dies druckt beispielsweise alle Hyperlink-URLs:

<code class="language-python">for link in soup.find_all('a'):
    print(link.get('href'))</code>
Nach dem Login kopieren

find_all() akzeptiert Argumente wie reguläre Ausdrücke oder Tag-Attribute für eine präzise Filterung. Weitere Informationen zu erweiterten Funktionen finden Sie in der Beautiful Soup-Dokumentation.

HTML navigieren und analysieren

Bevor Sie Parsing-Code schreiben, prüfen Sie den vom Browser gerenderten HTML-Code. Jede Webseite ist einzigartig; Die Datenextraktion erfordert oft Kreativität und Experimentierfreudigkeit.

Web Scraping and Parsing HTML in Python with Beautiful Soup

Unser Ziel ist es, einzigartige MIDI-Dateien herunterzuladen, ausgenommen Duplikate und Remixe. Browser-Entwicklertools (Rechtsklick, „Inspizieren“) helfen dabei, HTML-Elemente für den programmgesteuerten Zugriff zu identifizieren.

Web Scraping and Parsing HTML in Python with Beautiful Soup

Verwenden wir find_all() mit regulären Ausdrücken, um Links zu filtern, die MIDI-Dateien enthalten (ausgenommen solche mit Klammern im Namen):

Erstellen Sie nes_midi_scraper.py:

<code class="language-python">import re
import requests
from bs4 import BeautifulSoup

vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')

if __name__ == '__main__':
    attrs = {'href': re.compile(r'\.mid$')}
    tracks = soup.find_all('a', attrs=attrs, string=re.compile(r'^((?!\().)*$'))
    count = 0
    for track in tracks:
        print(track)
        count += 1
    print(len(tracks))</code>
Nach dem Login kopieren

Dies filtert MIDI-Dateien, druckt ihre Link-Tags und zeigt die Gesamtzahl an. Führen Sie mit python nes_midi_scraper.py.

aus

Herunterladen der MIDI-Dateien

Jetzt laden wir die gefilterten MIDI-Dateien herunter. Fügen Sie die Funktion download_track zu nes_midi_scraper.py:

hinzu
<code class="language-bash">pip install requests==2.22.0 beautifulsoup4==4.8.1</code>
Nach dem Login kopieren
Nach dem Login kopieren

Diese Funktion lädt jeden Titel herunter und speichert ihn unter einem eindeutigen Dateinamen. Führen Sie das Skript im gewünschten Speicherverzeichnis aus. Sie sollten ungefähr 2230 MIDI-Dateien herunterladen (abhängig vom aktuellen Inhalt der Website).

Web Scraping and Parsing HTML in Python with Beautiful Soup

Das Potenzial des Webs erkunden

Web Scraping öffnet Türen zu riesigen Datensätzen. Denken Sie daran, dass Webseitenänderungen Ihren Code beschädigen können. Halten Sie Ihre Skripte auf dem neuesten Stand. Verwenden Sie Bibliotheken wie Mido (für die MIDI-Datenverarbeitung) und Magenta (für das Training neuronaler Netzwerke), um auf dieser Grundlage aufzubauen.

Das obige ist der detaillierte Inhalt vonWeb Scraping und Parsing von HTML in Python mit Beautiful Soup. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage