Maison  >  Article  >  développement back-end  >  Utilisation pratique des robots en Python : Kuwo music crawler

Utilisation pratique des robots en Python : Kuwo music crawler

王林
王林original
2023-06-09 23:43:353169parcourir

À l'ère d'Internet, l'information est devenue extrêmement importante, les données sont devenues l'une des pierres angulaires de la valeur et les robots d'exploration Web sont l'un des outils importants pour obtenir et traiter les données. Le langage Python est devenu le langage de programmation de choix pour de nombreux programmeurs de robots d'exploration en raison de sa simplicité, de sa facilité d'apprentissage et de son efficacité. Dans cet article, nous utiliserons le langage Python pour explorer les données du site Web Kuwo Music à travers un cas pratique, et effectuer l'analyse et le traitement des données.

Kuwo Music est l'un des lecteurs de musique les plus connus en Chine, avec un grand nombre de ressources musicales et de groupes d'utilisateurs. Nous prendrons comme exemple le site Kuwo Music pour présenter le processus spécifique de mise en œuvre du crawl des données.

1. Analyse des données

Avant d'explorer, nous devons d'abord analyser la structure de la page Web et la méthode de stockage des données du site cible. En ouvrant la page Web de Kuwo Music, vous pouvez constater qu'il existe une corrélation évidente entre l'adresse de la page Web et l'ID de la musique. Ajoutez "/song/" et l'ID de la musique après l'adresse de la page Web pour accéder à la page détaillée de la musique correspondante.

Ouvrez la page détaillée d'une musique et constatez qu'il y a de nombreuses données précieuses, notamment le titre de la chanson, le chanteur, l'album, la durée de la chanson, le volume de lecture, le nombre de commentaires, etc. Ces informations sont stockées dans des fichiers HTML sous forme de balises de page Web. En examinant le code source de la page, vous constaterez que la plupart des informations pertinentes sont cachées dans des balises avec les classes "__songinfo__" et "__detailed_info clearfix__".

2. Implémentation du robot

Le cœur du robot est d'explorer les données. Nous implémentons l'exploration et la sauvegarde des données séparément.

  1. Data crawling

Nous devons définir une fonction pour recevoir une liste contenant les identifiants de musique, accéder à la page de la musique correspondante et l'explorer utilement des informations. L'implémentation spécifique est la suivante :

import requests
from bs4 import BeautifulSoup

def get_music_info(musicids):
    musicinfo = []
    for musicid in musicids:
        url = 'http://www.kuwo.cn/play_detail/' + str(musicid)
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
        response = requests.get(url, headers=headers)
        response.encoding = response.apparent_encoding
        soup = BeautifulSoup(response.text, 'html.parser')

        music_title = soup.find('h1', class_='info_tit').text.strip() # 歌曲名称
        artist = soup.find('p', class_='name').text.strip() # 歌手
        album = soup.find('a', class_='sname').text.strip() # 专辑
        duration = soup.find('span', class_='hilight').text.strip() # 歌曲时长
        play_counts = soup.find('em', class_='num').text.strip() # 播放量
        comments_counts = soup.find('em', class_='sub').text.strip() # 评论数

        musicinfo.append([musicid, music_title, artist, album, duration, play_counts, comments_counts])
        print('正在爬取音乐《{}》信息'.format(music_title))
    return musicinfo

Le code ci-dessus utilise la bibliothèque de requêtes et la bibliothèque BeautifulSoup pour demander des pages Web et analyser les fichiers HTML afin d'obtenir des informations de balise utiles. Parmi eux, les en-têtes sont des en-têtes déguisés qui simulent l’accès au navigateur Chrome pour éviter d’être bloqués par le serveur.

2. Sauvegarde des données

Nous sauvegardons les données explorées au format CSV Avant utilisation, nous devons d'abord importer la bibliothèque CSV :

import csv

. Ensuite, nous devons définir une fonction pour enregistrer les données et enregistrer les informations musicales explorées dans un fichier local au format CSV correct. L'implémentation spécifique est la suivante :

def save_csv(save_path, data_list):
    with open(save_path, 'w', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(['歌曲ID', '歌曲名称', '歌手', '专辑', '歌曲时长', '播放量', '评论数'])
        writer.writerows(data_list)
    print("数据已保存至{}".format(save_path))

Le code ci-dessus utilise le CSV. bibliothèque La méthodewriter() écrit les informations musicales dans un fichier. Il convient de noter que le délimiteur de fichier dans le fichier CSV est une virgule et que lors de l'écriture dans le fichier, vous devez utiliser newline='' pour corriger les lignes vides entre les lignes.

3. Analyse des données

Après avoir terminé l'exploration et la sauvegarde des données, nous pouvons commencer à analyser et à traiter les données. Dans le langage Python, des bibliothèques telles que pandas et matplotlib peuvent facilement implémenter l'analyse et la visualisation de données.

1. Importer la bibliothèque

L'analyse des données utilise principalement les bibliothèques pandas et matplotlib, nous devons donc utiliser le code suivant pour importer les bibliothèques associées :

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#🎜 🎜#2 .Lire les fichiers

Nous pouvons utiliser la fonction read_csv() dans la bibliothèque pandas pour lire le fichier CSV enregistré dans le DataFrame. L'implémentation spécifique est la suivante :

music_data = pd.read_csv('music_data.csv')
#🎜. 🎜#3. Filtrage et tri des données

Nous pouvons utiliser la méthode sort_values() dans pandas pour trier les données par ordre décroissant en fonction des play_counts, et utiliser la méthode head() pour conserver uniquement la première. 20 données.

top_20_play_counts = music_data.sort_values('播放量', ascending=False).head(20)

4. Visualisation des données

L'utilisation de la bibliothèque matplotlib pour réaliser la visualisation des données peut fournir une compréhension plus claire des relations et des tendances entre les données. Nous pouvons utiliser le code suivant pour tracer un graphique de courbe musicale des 20 meilleures pièces de musique Kuwo.

plt.figure(figsize=(20, 8)) # 设置图像大小
sns.lineplot(x='歌曲名称', y='播放量', data=top_20_play_counts) # 绘制曲线图
plt.xticks(rotation=90, fontsize=14) # 调整x轴刻度大小和旋转角度
plt.yticks(fontsize=14) # 调整y轴刻度大小
plt.xlabel('歌曲名称', fontsize=16) # 坐标轴标题
plt.ylabel('播放量', fontsize=16)
plt.title('酷我音乐播放量排名前20的歌曲', fontsize=20) # 图像标题
plt.show() # 显示图像

Grâce au code ci-dessus, nous pouvons comprendre plus intuitivement la tendance de lecture des 20 meilleures chansons de Kuwo Music.

4. Résumé

Cet article décrit en détail l'utilisation du langage Python dans des combats de crawlers réels à travers un cas pratique. En analysant la structure de la page Web et la méthode de stockage des données, en utilisant les requêtes et les bibliothèques BeautifulSoup pour l'exploration des données, et enfin en utilisant les bibliothèques pandas et matplotlib pour l'analyse et la visualisation des données. J'espère avoir une meilleure compréhension de l'application du langage Python dans le domaine des robots d'exploration dans la pratique.

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
Article précédent:Exemples Naive Bayes en PythonArticle suivant:Exemples Naive Bayes en Python