哔哩哔哩上有一个相簿板块,里面有很多绘画和摄影,自己动手一张一张保存太慢,于是想到了python爬虫。
今天就用python来写个爬虫,爬取每月月榜上的小姐姐,一劳永逸。
爬虫步骤:
1.在bilibili上找到API接口
2.使用requests去访问接口,获取json字典
3.根据json内容,获取地址来下载图片
1.先定义请求头,模仿浏览器去访问网站;
2.定义函数获取json
3.定义下载器
4.通过循环爬取json的图片地址下载图片
效果图:
s私信小编01 获取此项目数十套PDF!
具体代码如下:
import requests import os #定义请求头 headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0' } def get_json(url): #定义api中的关键字 params={ 'biz':'2', 'category':'cos', 'rank_type':'month', 'date':'2019-09',#修改日期可获得不同月榜 'page_num':'0', 'page_size':'50' } #访问逻辑,处理异常 try: html=requests.get(url,params=params,headers=headers) return html.json() #print(html.json()) except: print('请求出错...') def downloader(url,path): #初始化大小 size=0 #下载视频 response=requests.get(url,headers=headers,stream=True) #构造下载器 chunk_size=1024 #文件大小 content_size=pic[a]['img_size'] print('[图片大小]:%0.2f MB'%(content_size/chunk_size)) #文件处理 if response.status_code==200: with open(path,'wb') as f: #迭代相应数据 for data in response.iter_content(chunk_size=chunk_size): f.write(data) size+=len(data) if __name__=="__main__": try: os.mkdir('./图片') except: pass for i in range(10): url='https://api.vc.bilibili.com/link_draw/v2/Doc/ranklist?' html=get_json(url) infos=html['data']['items'] for info in infos: a=0 pic=info['item']['pictures'] title=info['item']['title'] try: a+=i pic_url=pic[a]['img_src'] path='./图片/%s.jpg' % (title+str(a)) downloader(pic_url,path) print(path) print('下载成功') except: print('下载失败...')
转载:https://blog.csdn.net/Pythoncxy/article/details/101767614
查看评论