インターネットの時代では、情報は非常に重要になり、データは価値の基礎の 1 つになり、Web クローラーはデータを取得して処理するための重要なツールの 1 つです。 Python 言語は、そのシンプルさ、学習の容易さ、効率性により、多くのクローラー プログラマーにとって最適なプログラミング言語となっています。この記事では、実際の事例を通じて、Python 言語を使用して Kuwo Music Web サイトのデータをクロールし、データ分析と処理を実行します。
Kuwo Music は中国で最も有名な音楽プレーヤーの 1 つであり、多数の音楽リソースとユーザー グループを持っています。 Kuwo Music Web サイトを例として、データのクローリングの具体的な実装プロセスを紹介します。
1. データ分析
クロールする前に、まず対象サイトの Web ページ構造とデータ保存方法を分析する必要があります。 Kuwo Music の Web ページを開くと、Web ページのアドレスと音楽 ID の間に明らかな相関関係があることがわかり、Web ページのアドレスの後に「/song/」と音楽 ID を追加すると、該当する音楽の詳細ページにアクセスできます。
音楽の詳細ページを開くと、曲名、歌手、アルバム、曲の長さ、再生音量、コメント数などの貴重なデータがたくさんあることがわかります。この情報は、Web ページのタグの形式で HTML ファイルに保存されます。ページのソース コードを見ると、関連情報のほとんどがクラス「__songinfo__」および「__detailed_info clearfix__」のタグ内に隠されていることがわかります。
2. クローラーの実装
クローラーの核心はデータをクロールすることであり、データのクロールと保存を別々に実装します。
音楽 ID を含むリストを受け取り、その音楽に対応するページにアクセスし、有用な情報をクロールする関数を定義する必要があります。具体的な実装は次のとおりです。
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
上記のコードは、リクエスト ライブラリと BeautifulSoup ライブラリを使用して Web ページをリクエストし、HTML ファイルを解析して有用なタグ情報を取得します。このうち、ヘッダーは、サーバーによってブロックされるのを防ぐために、Chrome ブラウザーのアクセスをシミュレートする偽装ヘッダーです。
2. データの保存
クロールされたデータを CSV 形式で保存します。使用する前に、CSV ライブラリをインポートする必要があります:
import csv
次に、データの保存機能は、クロールされた音楽情報を正しい CSV 形式でローカル ファイルに保存します。具体的な実装は次のとおりです:
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))
上記のコードは、CSV ライブラリの Writer() メソッドを使用して、音楽を保存する ファイルに情報が書き込まれます。 CSV ファイルのファイル区切り文字はカンマであることに注意してください。ファイルに書き込むときは、newline='' を使用して行間の空白行を修正する必要があります。
3. データ分析
データのクロールと保存が完了したら、データの分析と処理を開始できます。 Python 言語では、pandas や matplotlib などのライブラリを使用して、データ分析と視覚化を簡単に実装できます。
1. ライブラリのインポート
データ分析では主に pandas と matplotlib ライブラリを使用するため、次のコードを使用して関連ライブラリをインポートする必要があります:
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
2. ファイルの読み取り
パンダ ライブラリの read_csv() 関数を使用して、保存された CSV ファイルを DataFrame に読み取ることができます。具体的な実装は次のとおりです:
music_data = pd.read_csv('music_data.csv')
3. データのフィルタリングと並べ替え
pandas の sort_values() メソッドを使用して、play_counts に従ってデータを降順に並べ替え、head() メソッドを使用して最初の 20 データのみを保持できます。
top_20_play_counts = music_data.sort_values('播放量', ascending=False).head(20)
4. データの視覚化
matplotlib ライブラリを使用してデータの視覚化を実現すると、データ間の関係と傾向をより明確に理解できるようになります。次のコードを使用して、Kuwo 音楽再生のトップ 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() # 显示图像
上記のコードを通じて、Kuwo Music の上位 20 曲の再生傾向をより直感的に理解できます。
4. 概要
この記事では、実際のクローラ戦闘における Python 言語の使用法を実際の事例を使って詳しく説明します。 Web ページの構造とデータの保存方法を分析し、リクエストと BeautifulSoup ライブラリを使用してデータ クローリングを行い、最後に pandas と matplotlib ライブラリを使用してデータの分析と視覚化を行います。クローラー分野での Python 言語の実際の応用について、より深く理解できるようになることを願っています。
以上がPythonでのクローラーの実践:Kuwo musicクローラーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。