利用爬虫爬取b站高追番榜图片(简单详细+python实现)


在这里插入图片描述

说到b站,往往就能想到二次元,在如今互联网强势的时代,b站脱颖而出,成为视频播放排行的一大亮点,动漫风格很多,很让人喜欢,起初我就是爱上了动漫,我也成为了b站的一员,不过如果你认为b站只能看动漫就out了!因为当你拿b站看动漫的时候,可能你的兄弟或者朋友已经在b站开始学习了,不得不说,b站学习是真的好,我基本上编程到现在都离不开b站!

所以在b站学完手艺,就要报答一下b站啦!(手动滑稽)

开始

本次我们呢,将会爬取b站高追番榜,因为一个番剧好不好看,取决于它的追番人数,(来自一个老番党的提示),因为有时候我看番,有些评分低的不一定很难看,所以这次我就爬b站追番榜吧!

爬虫步骤与思路

1.目标url
2.发送请求
3.解析数据
4.清洗数据
5.保存数据

理解这些,我们就开始操作吧!

首先

1.目标url
在这里插入图片描述
链接:最高追番榜链接

这里为了实现翻页,我们要进行抓包操作

在这里插入图片描述
这是我抓到的数据,是一堆js数据,然后再抓第二页发现了他们的规律,详细的话可以自己去实践(自己动手也很重要!!!),就是第一页的page=1,第二页为2…以此类推

获取了目标的url之后就简单了!

代码

里面有注释,我就不多说了,就是简单的jsonpath的使用,如果有不清楚jsonpath的可以看看此链接:
点我!!里面也有爬虫实战的3大练习,初学的可以去练练手,往后我会继续做b站的爬虫练习
(偷偷的说下一章是爬取b站番剧top50排行榜 =.=)

import jsonpath
import os
from urllib.request import urlretrieve
import requests
import time
#包装成函数
def url_list(id):
    #目标url
    url = 'https://api.bilibili.com/pgc/season/index/result?season_version=-1&area=-1&is_finish=-1&copyright=-1&season_status=-1&season_month=-1&year=-1&style_id=-1&order=3&st=1&sort=0&page={}&season_type=1&pagesize=20&type=1'.format(id)

    #模拟浏览器
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.69 Safari/537.36'}
    #发送请求+解析数据
    response=requests.get(url,headers=headers).json()
    name_list = jsonpath.jsonpath(response, '$..title')
    link_list=jsonpath.jsonpath(response,'$..cover')

    return (name_list,link_list)

#文件名
text='b站最高追番榜'
if not os.path.exists(text):
    os.mkdir(text)
n=1
#保存100页,有需要的可以增多
for i in range(1,101):
    name_list, link_list = url_list(i)
    for name, link in zip(name_list, link_list):
        try:
            #这里是在爬图片的时候发现了一些名字的bug,用这个就能解决了
            urlretrieve(link, text + '/' + (str(n) + (name.replace(':',' ')).split('/')[0]) + '.jpg')
            n += 1
            print(name + '100%')
        #如果显示报错,可能就又是未知名字的问题,目前没有发现
        except:
            #以数字命名
            urlretrieve(link, text + '/' + str(n) + '.jpg')
            n+=1

    print('第%d页爬取完毕,正在加载下一页...' % i)
    #等待第二页
    time.sleep(2)


效果

在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值