Heim  >  Artikel  >  Backend-Entwicklung  >  Praktischer Einsatz von Crawlern in Python: Kuwo Music Crawler

Praktischer Einsatz von Crawlern in Python: Kuwo Music Crawler

王林
王林Original
2023-06-09 23:43:353221Durchsuche

Im Zeitalter des Internets sind Informationen extrem wichtig geworden, Daten sind zu einem der Eckpfeiler des Wertes geworden und Webcrawler sind eines der wichtigen Werkzeuge zum Erhalten und Verarbeiten von Daten. Aufgrund ihrer Einfachheit, leichten Erlernbarkeit und Effizienz ist die Python-Sprache für viele Crawler-Programmierer zur Programmiersprache der Wahl geworden. In diesem Artikel verwenden wir die Python-Sprache, um die Daten der Kuwo Music-Website durch einen praktischen Fall zu crawlen und eine Datenanalyse und -verarbeitung durchzuführen.

Kuwo Music ist einer der bekanntesten Musikplayer in China mit einer großen Anzahl an Musikressourcen und Benutzergruppen. Wir werden die Kuwo Music-Website als Beispiel nehmen, um den spezifischen Implementierungsprozess des Crawlens von Daten vorzustellen.

1. Datenanalyse

Vor dem Crawlen müssen wir zunächst die Webseitenstruktur und die Datenspeichermethode der Zielseite analysieren. Wenn Sie die KuWo Music-Webseite öffnen, können Sie feststellen, dass die Webseitenadresse offensichtlich mit der Musik-ID zusammenhängt. Fügen Sie „/song/“ und die Musik-ID nach der Webseitenadresse hinzu, um auf die detaillierte Seite der entsprechenden Musik zuzugreifen.

Öffnen Sie die Detailseite einer Musik und stellen Sie fest, dass dort viele wertvolle Daten enthalten sind, darunter Songname, Interpret, Album, Songdauer, Wiedergabelautstärke, Anzahl der Kommentare usw. Diese Informationen werden in HTML-Dateien in Form von Webseiten-Tags gespeichert. Wenn Sie sich den Quellcode der Seite ansehen, können Sie feststellen, dass die meisten relevanten Informationen in Tags mit den Klassen „__songinfo__“ und „__detailed_info clearfix__“ verborgen sind.

2. Crawler-Implementierung

Der Kern des Crawlers besteht darin, Daten zu crawlen und zu speichern.

  1. Daten-Crawling

Wir müssen eine Funktion definieren, die eine Liste mit Musik-IDs empfängt, auf die der Musik entsprechende Seite zugreift und die nützlichen Informationen crawlt. Die spezifische Implementierung lautet wie folgt:

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

Der obige Code verwendet die Anforderungsbibliothek und die BeautifulSoup-Bibliothek, um Webseiten anzufordern und HTML-Dateien zu analysieren, um nützliche Tag-Informationen zu erhalten. Unter ihnen sind Header getarnte Header, die den Zugriff auf den Chrome-Browser simulieren, um eine Blockierung durch den Server zu verhindern.

2. Datenspeicherung

Wir speichern die gecrawlten Daten im CSV-Format. Bevor wir sie verwenden, müssen wir die CSV-Bibliothek importieren:

import csv

Dann müssen wir eine Funktion zum Speichern der Daten und der gecrawlten Musik definieren Informationen und speichern Sie sie in einer lokalen Datei im richtigen CSV-Format. Die spezifische Implementierung ist wie folgt:

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

Der obige Code verwendet die write()-Methode in der CSV-Bibliothek, um Musikinformationen in die Datei zu schreiben. Es ist zu beachten, dass das Dateitrennzeichen in der CSV-Datei ein Komma ist und Sie beim Schreiben in die Datei newline='' verwenden müssen, um die Leerzeilen zwischen den Zeilen zu korrigieren.

3. Datenanalyse

Nachdem wir das Crawlen und Speichern der Daten abgeschlossen haben, können wir mit der Analyse und Verarbeitung der Daten beginnen. In der Python-Sprache können Bibliotheken wie Pandas und Matplotlib problemlos Datenanalyse und -visualisierung implementieren.

1. Bibliotheken importieren

Die Datenanalyse verwendet hauptsächlich Pandas- und Matplotlib-Bibliotheken. Daher müssen wir den folgenden Code verwenden, um verwandte Bibliotheken zu importieren:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

2. Dateien lesen

Wir können die Funktion read_csv() in verwenden Pandas-Bibliothek, Lesen Sie die gespeicherte CSV-Datei in den DataFrame. Die spezifische Implementierung ist wie folgt:

music_data = pd.read_csv('music_data.csv')

3. Datenfilterung und -sortierung

Wir können die Methode sort_values() in Pandas verwenden, um die Daten in absteigender Reihenfolge zu sortieren Spielen Sie count play_counts ab und verwenden Sie die head()-Methode. Nur die ersten 20 Daten werden beibehalten.

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

4. Datenvisualisierung

Verwenden Sie die Matplotlib-Bibliothek, um eine Datenvisualisierung zu erreichen, damit Sie die Beziehungen und Trends zwischen Daten klarer verstehen können. Mit dem folgenden Code können wir ein Musikkurvendiagramm der 20 beliebtesten Kuwo-Musikstücke zeichnen.

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() # 显示图像

Durch den obigen Code können wir den Wiedergabetrend der Top-20-Songs auf Kuwo Music intuitiver verstehen.

4. Zusammenfassung

Dieser Artikel beschreibt detailliert die Verwendung der Python-Sprache im tatsächlichen Crawler-Kampf. Durch Analyse der Webseitenstruktur und Datenspeichermethode, Verwendung von Anfragen und BeautifulSoup-Bibliotheken zum Daten-Crawling und schließlich Verwendung von Pandas- und Matplotlib-Bibliotheken zur Datenanalyse und -visualisierung. Ich hoffe, dass ich die Anwendung der Python-Sprache im Crawler-Bereich in der Praxis besser verstehen kann.

Das obige ist der detaillierte Inhalt vonPraktischer Einsatz von Crawlern in Python: Kuwo Music Crawler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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