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