Pythonクローラー実戦、Request+urllibモジュール、Biao Song Chartの全音楽ファイルの一括ダウンロードとクロール

序文

今日紹介するのは、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学習ロードマップ(さらば影響力のある学習)

おすすめ

転載: blog.csdn.net/Modeler_xiaoyu/article/details/128236996