Maison >développement back-end >Tutoriel Python >Web Scraping et analyse HTML en Python avec Beautiful Soup
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.
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.
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).
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!