Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penggunaan praktikal perangkak dalam Python: Perangkak muzik Kuwo

Penggunaan praktikal perangkak dalam Python: Perangkak muzik Kuwo

王林
王林asal
2023-06-09 23:43:353221semak imbas

Dalam era Internet, maklumat telah menjadi sangat penting, data telah menjadi salah satu asas nilai, dan perangkak web adalah salah satu alat penting untuk mendapatkan dan memproses data. Bahasa Python telah menjadi bahasa pengaturcaraan pilihan ramai pengaturcara crawler kerana kesederhanaan, kemudahan pembelajaran dan kecekapannya. Dalam artikel ini, kami akan menggunakan bahasa Python untuk merangkak data tapak web Kuwo Music melalui kes praktikal, dan melakukan analisis dan pemprosesan data.

Kuwo Music ialah salah satu pemain muzik yang lebih terkenal di China, dengan sejumlah besar sumber muzik dan kumpulan pengguna. Kami akan mengambil tapak web Kuwo Music sebagai contoh untuk memperkenalkan proses pelaksanaan khusus data merangkak.

1. Analisis data

Sebelum merangkak, kami perlu menganalisis struktur halaman web dan kaedah penyimpanan data tapak sasaran terlebih dahulu. Dengan membuka halaman web KuWo Music, anda boleh mendapati bahawa alamat halaman web mempunyai korelasi yang jelas dengan ID muzik Tambah "/lagu/" dan ID muzik selepas alamat halaman web untuk mengakses halaman terperinci muzik yang sepadan.

Buka halaman terperinci muzik dan temui terdapat banyak data berharga, termasuk nama lagu, artis, album, tempoh lagu, volum main balik, bilangan ulasan, dsb. Maklumat ini disimpan dalam fail HTML dalam bentuk teg halaman web. Dengan melihat kod sumber halaman, anda boleh mendapati bahawa kebanyakan maklumat yang berkaitan disembunyikan dalam teg dengan kelas "__songinfo__" dan "__detailed_info clearfix__".

2. Pelaksanaan crawler

Inti perangkak adalah untuk merangkak data dan menyimpan data secara berasingan.

  1. Merangkak data

Kami perlu menentukan fungsi yang menerima senarai yang mengandungi ID muzik, mengakses halaman yang sepadan dengan muzik dan merangkak maklumat yang berguna. Pelaksanaan khusus adalah seperti berikut:

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

Kod di atas menggunakan perpustakaan permintaan dan perpustakaan BeautifulSoup untuk meminta halaman web dan menghuraikan fail HTML untuk mendapatkan maklumat teg yang berguna. Antaranya, pengepala ialah pengepala yang menyamar yang mensimulasikan akses penyemak imbas Chrome untuk mengelakkan daripada disekat oleh pelayan.

2. Penjimatan Data

Kami akan menyimpan data yang dirangkak dalam format CSV Sebelum menggunakannya, kami perlu mengimport pustaka CSV:

import csv

Kemudian, kami perlu. tentukan a Fungsi penjimatan data menyimpan maklumat muzik yang dirangkak ke fail setempat dalam format CSV yang betul Pelaksanaan khusus adalah seperti berikut:

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

Kod di atas menggunakan kaedah writer() dalam pustaka CSV untuk menyimpan. muzik Maklumat ditulis pada fail. Perlu diingatkan bahawa pembatas fail dalam fail CSV ialah koma, dan apabila menulis ke fail, anda perlu menggunakan newline='' untuk membetulkan baris kosong antara baris.

3. Analisis Data

Selepas melengkapkan merangkak dan menyimpan data, kami boleh mula menganalisis dan memproses data. Dalam bahasa Python, perpustakaan seperti panda dan matplotlib boleh melaksanakan analisis dan visualisasi data dengan mudah.

1. Import perpustakaan

Analisis data terutamanya menggunakan perpustakaan panda dan matplotlib, oleh itu, kami perlu menggunakan kod berikut untuk mengimport perpustakaan berkaitan:

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

2

Kita boleh menggunakan fungsi read_csv() dalam pustaka panda untuk membaca fail CSV yang disimpan ke dalam DataFrame Pelaksanaan khusus adalah seperti berikut:

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

3 >

Kita boleh menggunakan kaedah sort_values() dalam panda untuk mengisih data dalam tertib menurun mengikut play_counts, dan menggunakan kaedah head() untuk mengekalkan hanya 20 data pertama.

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

4. Penggambaran data

Gunakan perpustakaan matplotlib untuk memvisualisasikan data supaya anda dapat memahami dengan lebih jelas perhubungan dan arah aliran antara data. Kita boleh menggunakan kod berikut untuk melukis carta lengkung muzik 20 muzik Kuwo terbaik.

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

Melalui kod di atas, kami dapat memahami dengan lebih intuitif trend main balik 20 lagu teratas dalam Kuwo Music.

4. Ringkasan

Artikel ini menggunakan kes praktikal untuk menerangkan secara terperinci penggunaan bahasa Python dalam pertempuran crawler sebenar. Dengan menganalisis struktur halaman web dan kaedah penyimpanan data, menggunakan permintaan dan perpustakaan BeautifulSoup untuk merangkak data, dan akhirnya menggunakan perpustakaan panda dan matplotlib untuk analisis dan visualisasi data. Saya berharap untuk mempunyai pemahaman yang lebih baik tentang aplikasi bahasa Python dalam bidang crawler dalam amalan.

Atas ialah kandungan terperinci Penggunaan praktikal perangkak dalam Python: Perangkak muzik Kuwo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Contoh Naive Bayes dalam PythonArtikel seterusnya:Contoh Naive Bayes dalam Python