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

导读:本篇文章讲解 利用爬虫爬取b站高追番榜图片(简单详细+python实现),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com


在这里插入图片描述

说到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)


效果

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66868.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!