序文
今日紹介するのは、PythonがBiaoge Bangのすべてのオーディオデータをクロールしてローカルに保存することです.ここで、コードを必要とする友人にコードを渡し、いくつかのヒントを提供します.
まず、クロールする前に、できるだけクローラーと認識されないように、ブラウザのふりをする必要があります. 基本的なことは、リクエストヘッダーを追加することですが、このようなプレーンテキスト
このデータをクロールする人が多くなるため、プロキシ IP を変更したり、リクエスト ヘッダーをランダムに変更して音楽データをクロールしたりすることを検討する必要があります。
毎回クローラー コードを記述する前に、最初の最も重要なステップは、Web ページを分析することです。
分析の結果、クロール処理中はクロール速度が比較的遅いことが判明したため、Google ブラウザの画像や JavaScript などを無効にすることで、クローラーのクロール速度を改善することもできます。
開発ツール
Python バージョン: 3.8
関連モジュール:
リクエストモジュール
再モジュール
urllib モジュール
環境構築
Python をインストールして環境変数に追加すると、必要な関連モジュールが pip によってインストールされます。
アイデア分析
ブラウザでクロールするページを開きます
F12 を押して開発者ツールに入り、必要な音楽データがどこにあるかを確認します
ページ データが必要です
コード
# 存放音乐文件的文件夹
folder = r'F:\music'
if not isdir(folder):
mkdir(folder)
# 音乐飙升榜地址
url = 'https://music.163.com/discover/toplist?id=3779629'
# 模拟Chrome浏览器
headers = {
'User-Agent': 'Chrome/88.0.4324.190'}
req = Request(url, headers=headers)
# 读取网页源代码
with urlopen(req) as fp:
content = fp.read().decode()
# 正则表达式,提取音乐id和名字
pattern = r'<li><a href="/song\?id=(.+?)">(.+?)</a></li>'
for music_id, music_name in findall(pattern, content):
music_file = rf'{
folder}\{
music_name}.mp3'
if isfile(music_file):
print(f'文件已存在,跳过...{
music_name}')
continue
# 下载地址
download_url = rf'https://music.163.com/song/media/outer/url?id={
music_id}'
req = Request(download_url, headers=headers)
# 读取网络音乐文件数据,写入本地文件
with urlopen(req) as fp:
content = fp.read()
with open(music_file, 'wb') as fp:
fp.write(content)
print(f'下载完成...{
music_name}')
結果表示
やっと
読者に感謝するために、最近のお気に入りのプログラミング ドライ グッズをいくつか紹介し、すべての読者にお返しし、お役に立てれば幸いです。
初心者向けの実践的なPythonチュートリアルありますよ〜
Xiaoyuと一緒に成長してください!
①100以上のPythonPDF(主流と古典の本が利用可能であること)
② Python 標準ライブラリ (最も完全な中国語版)
③ 爬虫類プロジェクトのソース コード (40 または 50 の興味深い古典的な手の練習プロジェクトとソース コード)
④Python、クローラー、Web開発、ビッグデータ解析の基礎動画(初心者向け)
⑤Python学習ロードマップ(さらば影響力のある学習)