billboard吧 关注:597,392贴子:56,887,638

【Billboard】python爬虫爬取billboard榜单数据

只看楼主收藏回复

这几天写python爬虫用billboard练手时,在github发现了一个大佬写的爬虫,跟大家分享下。虽然自己写了一个,由于技术渣就先用大佬的项目,不过目前抓取图片还存在问题所以就用自己写的,后面也会贴上(小白技术勿喷)。原项目:网页链接 开发者:guoguo12
楼主很久没玩贴吧了,不懂发帖格式。之前的贴被删了,我是煞比,吧务大大求放过


IP属地:广东来自iPhone客户端1楼2022-10-22 09:22回复



    IP属地:广东2楼2022-10-22 09:24
    回复
      挺好


      IP属地:北京来自Android客户端3楼2022-10-22 09:28
      回复
        运行环境:python(3以上版本) pycharm(建议安装)
        运行所需外部库:bs4 requests
        楼主用的python版本3.10,目前运行没有版本问题,这个包直接用pip下载安装就完事了,bs4和requests包也一样用pip安装。


        IP属地:广东4楼2022-10-22 09:30
        回复
          运行环境和外部工具安装完毕后就可以开始爬取了
          1.爬取整个榜单——以billboard hot 100周榜为例
          先导入billboard模块
          使用函数ChartData,向函数传递以下参数:
          name,榜单的名称(即billboard榜单的网址url部分),类型为字符串
          date,日期,不需要传递发布榜单的特定日期,billboard网站后端会自动根据你给定的任意日期返回所在周的榜单,当不传递日期参数时,爬虫默认会爬取当天所在周的榜单。日期格式为YYYY-MM-DD,类型为字符串
          year,年份,当需要爬取年榜时传递年份参数,格式为YYYY,类型为字符串


          IP属地:广东5楼2022-10-22 09:40
          收起回复
            2.使用ChartData函数爬取榜单成功后,会返回一个类型为ChartEntry(大佬定义)的实例对象,该对象具有以下属性:
            title 歌名
            artist 歌手
            rank 当前排名
            peakPos 历史最高排名
            lastPos 上周排名
            weeks 在榜周数
            isNew 是否为新上榜歌曲
            image 单曲或艺人的图片网址(目前无法爬取)
            当chart是一个ChartEntry类型的对象时,我们可以通过它的属性获取具体榜单数据,示例如下:


            IP属地:广东6楼2022-10-22 09:48
            收起回复
              mark了


              IP属地:广东来自iPhone客户端7楼2022-10-22 09:50
              回复
                输出结果如下:
                我们也可以直接将chart打印,获取整个榜单,输出结果如下:


                IP属地:广东8楼2022-10-22 09:50
                回复
                  在B吧原来也可以学技术,爱了


                  IP属地:北京来自iPhone客户端9楼2022-10-22 09:51
                  回复
                    3.常用榜单的url名
                    当我们使用ChartData函数时需要传递榜单名称参数,其实就是告诉爬虫我们要爬的榜单的网址url,由于爬虫代码已经写了url的一部分,我们只需要传递剩下的一部分。如图


                    IP属地:广东11楼2022-10-22 09:59
                    回复
                      下面贴一些常见的榜单名称,便于后续使用:
                      hot100周榜:"hot-100"
                      album200周榜:"billboard-200"
                      R&B周榜:"r-and-b-songs"
                      EDM周榜:"dance-electronic-songs"
                      country周榜:"country-songs"
                      global周榜:"billboard-global-200"
                      R&B/Hip-Hop周榜:"r-b-hip-hop-songs"
                      rock周榜:"hot-rock-songs"
                      artist周榜:"artist-100"


                      IP属地:广东12楼2022-10-22 10:01
                      回复
                        支持


                        IP属地:北京来自Android客户端13楼2022-10-22 10:02
                        回复
                          支持


                          IP属地:山东来自Android客户端14楼2022-10-22 10:05
                          回复
                            技术🐔同行


                            IP属地:浙江来自Android客户端15楼2022-10-22 10:05
                            回复
                              如果不知道榜单的名称,可以在https://www.billboard.com/charts里查找,官网所有的榜单都能在里面看到,包括pro chart(正常用浏览器访问加载完毕后官网会跳出订阅界面,但是网页源代码里面依然能爬出来)。


                              IP属地:广东16楼2022-10-22 10:06
                              回复