python 获取文件大小_Python爬虫爬取小姐姐照片!

哔哩哔哩上有一个相簿板块,里面有很多绘画和摄影,自己动手一张一张保存太慢,于是想到了python爬虫。

今天就用python来写个爬虫,爬取每月月榜上的小姐姐,一劳永逸。

爬虫步骤:

1.在bilibili上找到API接口

2.使用requests去访问接口,获取json字典

3.根据json内容,获取地址来下载图片

python 获取文件大小_Python爬虫爬取小姐姐照片!_第1张图片

1.先定义请求头,模仿浏览器去访问网站;

2.定义函数获取json

3.定义下载器

4.通过循环爬取json的图片地址下载图片

效果图:

python 获取文件大小_Python爬虫爬取小姐姐照片!_第2张图片

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('下载失败...')

你可能感兴趣的:(python,获取文件大小)