python爬取B站画友图片

本人今天接了个阿里的电话,感觉凉凉,心情不好,准备开始学习一直滞后的python学习计划。

自身本来对JAVA很熟悉,所以学python也没什么太大问题,花了2个小时把《简明python教程》扫了一遍,感觉确实有很多和JAVA不一样的地方,一开始很难接受,慢慢习惯就好了。

由于学习python今天是第一天,很多东西都只是凭着“语言的共同性”来解决的,所以有很多地方不规范,还望各位指正

下面进入正题

B站本身就有图片的资源接口,省了我们不少事



可以看到,api.vc.bilibili.com/link_draw/v2/Doc/index 这个接口本身就有图片的地址,接下来就方便很多了

我们访问该接口 依次爬取图片地址进行下载就可以了

爬取用requests包进行,这个包比python自带的urllib更好用

requests.get()方法需要的参数:

扫描二维码关注公众号,回复: 1534734 查看本文章
url='https://api.vc.bilibili.com/link_draw/v2/Doc/index'
params={
    'type':'recommend',
    'page_num':0,
    'page_size':45
}
headers={
    'User-Agent':'Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.110Safari/537.36',
    'Accept-Encoding':'gzip,deflate'
}

params是该接口需要的参数,其中type有三种类型,用来表示图片的排序:“recommend”即为默认,“hot”表示按热度排序,“new”表示按照时间排序。page_num和page_size不用解释了

r = requests.get(url=url,params=params, headers = headers)
html = r.text
decodejson = json.loads(html)
c = decodejson.get("data").get("items")

i = 0;
print(len(c))
while i <len(c):
    item = c[i].get("item")
    title = item.get("title")
    pictures_url = item.get("pictures")[0].get("img_src")
    save_img(img_url=pictures_url, file_name=title)
    i+=1
    if i >50:
        break

可以看到,python确实是很方便,requests.get()直接就可以了,其中的test属性就是页面的内容,也就是获取的API中responsebody中的内容。

为了获取的方便,我们再调用json包,将内容转换为json,接下来就是一层层的获取和遍历过程。

最后,贴一下图片保存的代码

def save_img(img_url,file_name,file_path='D:\图\B站爬虫测试\\'):
    #将图片保存至磁盘
    html = requests.get(img_url)
    #获取图片的后缀名
    file_suffix = os.path.splitext(img_url)[1]
    with open(file_path+file_name+file_suffix,'wb')as file:
        file.write(html.content)
    print("下载{}成功".format(file_name))

该方法包括三个参数,第一个参数是图片的地址,第二个参数是图片的名字,在解析json的时候顺便保存了名字,第三个参数是图片的路径,可以按照个人需要设置

‘wb’表示二进制写入文件


猜你喜欢

转载自blog.csdn.net/ran_max/article/details/80376819