Maison >développement back-end >Tutoriel Python >Web Scraping et analyse HTML en Python avec Beautiful Soup

Web Scraping et analyse HTML en Python avec Beautiful Soup

Linda Hamilton
Linda Hamiltonoriginal
2025-01-10 12:15:41994parcourir

Exploitez la puissance du Web Scraping avec Python et Beautiful Soup : un exemple de musique MIDI

Internet est un trésor d'informations, mais y accéder par programmation peut s'avérer difficile sans API dédiées. La bibliothèque Beautiful Soup de Python offre une solution puissante, vous permettant d'extraire et d'analyser des données directement à partir de pages Web.

Explorons cela en récupérant des données MIDI pour entraîner un réseau neuronal Magenta afin de générer de la musique classique de style Nintendo. Nous nous procurerons des fichiers MIDI à partir des archives de musique de jeux vidéo (VGM).

Configuration de votre environnement

Assurez-vous que Python 3 et pip sont installés. Il est crucial de créer et d'activer un environnement virtuel avant d'installer des dépendances :

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

Nous utilisons Beautiful Soup 4 (Beautiful Soup 3 n'est plus maintenu).

Grattage et analyse avec des requêtes et une belle soupe

Tout d'abord, récupérons le code HTML et créons un objet BeautifulSoup :

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

L'objet soup permet la navigation dans le HTML. soup.title donne le titre de la page ; print(soup.get_text()) affiche tout le texte.

Maîtriser le pouvoir de la belle soupe

Les méthodes find() et find_all() sont indispensables. soup.find() cible des éléments uniques (par exemple, soup.find(id='banner_ad').text obtient le texte de la bannière publicitaire). soup.find_all() parcourt plusieurs éléments. Par exemple, ceci imprime toutes les URL de liens hypertexte :

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

find_all() accepte des arguments tels que des expressions régulières ou des attributs de balise pour un filtrage précis. Reportez-vous à la documentation de Beautiful Soup pour les fonctionnalités avancées.

Navigation et analyse HTML

Avant d'écrire du code d'analyse, examinez le HTML rendu par le navigateur. Chaque page Web est unique ; l'extraction de données nécessite souvent de la créativité et de l'expérimentation.

Web Scraping and Parsing HTML in Python with Beautiful Soup

Notre objectif est de télécharger des fichiers MIDI uniques, à l'exclusion des doublons et des remix. Les outils de développement du navigateur (clic droit, « Inspecter ») aident à identifier les éléments HTML pour un accès par programmation.

Web Scraping and Parsing HTML in Python with Beautiful Soup

Utilisons find_all() avec des expressions régulières pour filtrer les liens contenant des fichiers MIDI (à l'exclusion de ceux avec des parenthèses dans leur nom) :

Créer 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>

Ceci filtre les fichiers MIDI, imprime leurs balises de lien et affiche le nombre total. Courez avec python nes_midi_scraper.py.

Téléchargement des fichiers MIDI

Maintenant, téléchargeons les fichiers MIDI filtrés. Ajoutez la fonction download_track à nes_midi_scraper.py :

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

Cette fonction télécharge chaque piste et l'enregistre sous un nom de fichier unique. Exécutez le script à partir du répertoire de sauvegarde souhaité. Vous devez télécharger environ 2230 fichiers MIDI (selon le contenu actuel du site).

Web Scraping and Parsing HTML in Python with Beautiful Soup

Explorer le potentiel du Web

Le Web scraping ouvre les portes à de vastes ensembles de données. N'oubliez pas que les modifications apportées aux pages Web peuvent casser votre code ; gardez vos scripts à jour. Utilisez des bibliothèques comme Mido (pour le traitement des données MIDI) et Magenta (pour la formation aux réseaux neuronaux) pour vous appuyer sur cette base.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn