大佬教程收集整理的这篇文章主要介绍了❤️心动挑战❤️python爬虫爬取B站封面图片,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对于文章c;标题是其浓缩的精华;那么对于视频c;其封面就可能是最亮眼的那一帧。B站c;作为最近比较火热的短视频平台c;其舞蹈区各种各样的舞蹈c;尤其是宅舞c;深受“宅男”的喜爱。(别和我说什么黑丝、jkc;我真的不喜欢😆 )
B站是有防爬措施的c;我一开始根据网页进行分析c;无果。
转念一想c;这么火热的B站c;想爬取的人肯定不止我一个c;于是乎c;我就开始搜索相关的文章和视频。
啪的一下c;很快啊c;我就找到一篇c;根据B站AV号爬取封面图片的文章c;我试了一下c;咦c;还真能用🤩(心中狂喜)
# 根据aidc;获取封面
https://api.bilibili.com/x/web-interface/view?aid=(aid)
可转念一想c;从去年开始c;B站就开始用BV号了c;哪来的AV号给我呀c;文章里的AV号是哪来的呀?害c;我转念又看了文章的日期c;2019年c;哦c;那没事了c;人家写那会c;B站还没改呢😂
方法总比困难多c;现在起码知道了怎么利用AV号c;那我利用BV号找到AV号不就可以了吗?我真是个大聪明。
找寻一番c;有个大佬分享了BV号的api
c;点击传送至大佬页面 我一看c;哦c;还是B站的大佬c;你这不讲武德c;居然教别人搞B站(不过我喜欢🤪 )
# 根据BV号获取cid
https://api.bilibili.com/x/player/pagelist?bvid=(bvid,要带上开头的BV!)
# 根据BV号和cid获取视频播放列表
https://api.bilibili.com/x/player/playurl?cid=(cid)&qn=(qn)&bvid=(bvid,要带上开头的BV!)
# 根据BV号和cid获取aid
https://api.bilibili.com/x/web-interface/view?cid=(cid)&bvid=(bvid,要带上开头的BV!)
总结上述内容的apic;那么思路就有了c;简直是有手就行呀c;跟着大佬混c;就是行!😏
先根据BV号找到cidc;再根据BV号和cid获取aidc;再根据aid获取封面。
而且爬取过程中的数据基本上都是json数据。其中:
cid
的数据在json的['data'][0]['cid']
中 aid
的数据在json的['data']['aid']
中 封面图片
的数据在json的['data']['pic']
中
更详细的过程c;我写在了代码的注释中👇
# -*- coding: UTF-8 -*-
# @Time: 2021/8/17 20:12
# @Author: 远方的星
# @CSDN: https://blog.csdn.net/qq_44921056
import os
import json
import requests
import chardet
from fake_useragent import UserAgent
# 随机产生请求头
ua = UserAgent(verify_ssl=false, path='D:/Pycharm/fake_useragent.json')
# 随机切换请求头
def random_ua():
headers = {
"accept-encoding": "gzip", # gzip压缩编码 能提高传输文件速率
"user-agent": ua.random
}
return headers
# 创建文件夹
def path_creat():
_path = "D:/B站封面/"
if not os.path.exists(_path):
os.@H_988_51@mkdir(_path)
return _path
# 对爬取的页面内容进行json格式处理
def get_text(url):
res = requests.get(url=url, headers=random_ua())
res.encoding = chardet.detect(res.content)['encoding'] # 统一字符编码
res = res.text
data = json.loads(res) # json格式化
return data
# 根据bv号获取av号
def get_aid(bv):
url_1 = 'https://api.bilibili.com/x/player/pagelist?bvid={}'.format(bv)
response = get_text(url_1)
cid = response['data'][0]['cid'] # 获取cid
url_2 = 'https://api.bilibili.com/x/web-interface/view?cid={}&bvid={}'.format(cid, bv)
response_2 = get_text(url_2)
aid = response_2['data']['aid'] # 获取aid
return aid
# 根据av号获取封面图片
def get_image(aid):
url_3 = 'https://api.bilibili.com/x/web-interface/view?aid={}'.format(aid)
response_3 = get_text(url_3)
image_url = response_3['data']['pic'] # 获取图片的下载连接
image = requests.get(url=image_url, headers=random_ua()).content # 获取图片
return image
# 下载封面
def download(image, file_name):
with open(file_name, 'wb') as f:
f.write(image)
f.close()
def @H_456_252@main():
k = 'Y'
while k == 'Y': # 根据用户需要一直循环
path = path_creat() # 创建保存B站封面的文件夹
bv = input("请输入视频的bv号:")
image_name = input("请你给想要下载的封面取一个喜欢的名字叭:")
aid = get_aid(bv)
image = get_image(aid)
file_name = path + '{}.jpg'.format(image_name)
download(image, file_name)
print("封面提取完毕^_^")
k = input("按Y键继续提取c;按Q退出:")
if __name__ == '__main__':
main()
代码可直接复制运行c;如果对你有帮助c;记得点赞哦c;也是对作者最大的鼓励c;不足之处可以在评论区多多指正、交流。
BV1C5411P7qM
的视频为例:在线网址:https://bigjpg.com/zh
这个是可以在线使用的c;可以将你的图片在线放大并且做降噪处理。有兴趣的小伙伴可以自己尝试一下c;我感觉效果还可以。
参考文章1:python 爬取B站封面 参考文章2:bilibili新出的BV号api
@H_944_743@作者:远方的星 CSDN:https://blog.csdn.net/qq_44921056 本文仅用于交流学习c;未经作者允许c;禁止转载c;更勿做其他用途c;违者必究。
以上是大佬教程为你收集整理的❤️心动挑战❤️python爬虫爬取B站封面图片全部内容,希望文章能够帮你解决❤️心动挑战❤️python爬虫爬取B站封面图片所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。