新手 豆瓣音乐爬虫

发布时间:2022-06-27 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了新手 豆瓣音乐爬虫脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

适用于 豆瓣音乐标签 (douban.com)

新手 豆瓣音乐爬虫

新手 豆瓣音乐爬虫

import re
import requests
from bs4 import BeautifulSoup
import argparse
import os
script = argparse.ArgumentParser(prog='豆瓣爬虫',description='这个脚本可以帮助你爬出豆瓣信息顺便存储本地',epilog='祝你爬取成功 直供学习交流')
script.add_argument('-u','--url',type=str,help='爬取的url链接',required=True)
script.add_argument('-p','--page',type=str,help='爬取的总页数',required=True)
script.add_argument('-r','--path',type=str,help='输入你的路径',required=False)
a = script.parse_args()
print(a)
if __name__ == "__main__":
    def Song(url='https://music.douban.com/tag/%E7%BE%8E%E5%9B%BD',count=0):
        # 我爬取的是音乐流行曲 学习交流
        n = 0
        header = {
            'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62"
        }
        parse = {
            'start':count,
            'type':'T'
        }
        Song = {
            'name': [],
            'discription': [],
            'eval': []
        }
        while n < count:
            result = requests.get(url=url, headers=header,params=parse)
            soup = BeautifulSoup(result.text, "lxml")
            # 歌曲数量
            SongNum = soup.findAll('div', class_='pl2')
            SongTitle = []
            for item in SongNum:
                item = str(item.find('a').getText())
                # 头部 缩短
                item = item.replace("n            ", "")
                # 中部
                item = item.replace("    ", "  ")
                # 尾部
                item = item.replace("n", "")
                # 单描述
                item = item.replace("     ", "")
                SongTitle.append(item)
            #     每列的歌曲
            Song['name'].append(SongTitle)
            SongDis = []
            # discription
            dis = soup.findAll('p', class_='pl')
            Disreg = re.compile('<p class="pl">(.*)</p>')
            for item in dis:
                item = Disreg.match(str(item)).group(1)
                SongDis.append(item)
            Song['discription'].append(SongDis)
            Songeval = []
            evaReg = re.compile('.*?(d+人评价).*')
            eva = soup.findAll('span', class_='pl')
            for item in eva:
                item = str(item).replace("n", "")
                item = item.replace("                ", "")
                item = item.replace("    ", "")
                item = evaReg.match(item)
                Songeval.append(item.group(1))
            Song['eval'].append(Songeval)
            if result.status_code == 200:
                n += 1
            print('正在采集....{}次 请稍等后....'.format(n))
            pass
        # 转化为json
        S = []
        for i in range(n):
            for index in range(20):
                Son = {}
                Son["name"] = Song["name"][i][index]
                Son["discription"] = Song["discription"][i][index]
                Son["eval"] = Song["eval"][i][index]
                S.append(Son)
        import json
        Song = json.dumps(S, ensure_ascii=False)
        # print("转化后的JSON: {}".format(Song))
        try:
            if os.path.exists(a.path):
                with open(a.path,"w",encoding='utf-8') as f:
                    f.write(Song)
            else:
                with open("inks.txt","w",encoding='utf-8') as f:
                    f.write(Song)
        except Exception as q:
            print('保存失败 可能是保存位置出错')
        else:
            print('保存到了:{}'.format(a.path))
    Song(a.url,int(a.page))
View Code

命令行运行

-u 填写url 记得 携带https

-p 页数

-r 路径 不写默认在 运行的文件地址下保存

学习交流 切勿违法与我无关

脚本宝典总结

以上是脚本宝典为你收集整理的新手 豆瓣音乐爬虫全部内容,希望文章能够帮你解决新手 豆瓣音乐爬虫所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: