利用爬虫爬取b站高追番榜图片!居然有这么多好看的剧!

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

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

开始

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

爬虫步骤与思路

1.目标url2.发送请求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):#目标urlurl = 'https://api.bilibili.com/pgc/season/index/result?season_version=-1&area=-1&is_finish=-1©right=-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 += 1print(name + '100%')#如果显示报错,可能就又是未知名字的问题,目前没有发现except:#以数字命名urlretrieve(link, text + '/' + str(n) + '.jpg')n+=1print('第%d页爬取完毕,正在加载下一页...' % i)#等待第二页time.sleep(2)

 

效果

是不是很简单呢,源码获取加群:1136192749

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部