开篇瞎扯
福利又来了,我真是为B站粉丝们操碎了心,哈哈哈(主要也是好玩)
首先声明,我只做技术交流,切勿用作商业用途,否则以后等着B站找你,吃官司吧。
争做一个 学法、知法、懂法、守法 的好公民。
同样的内容,我到时候录视频,就叫:B04.有意思的小东西 - 怎么download我的picture
Fiddler大显神通
注:如果你只想用这个软件的话,这不需要看,直接会运行python程序就可。后面有代码。
分析网络数据,首先需要抓包,请看 Fiddler的使用 。
先把Fiddler用好了,再看这个。
1,我们想下载 B01.有意思的小东西 - pdf转word【python实用工具】https://www.bilibili.com/video/av78175545 的封面。
首先需要它的av号,或者url网址。
2,打开网页,打开Fiddler,刷新网页,抓包,停止抓包,得到数据。
3,Ctrl+F 搜索 https://api.bilibili.com/x/web-interface/view
。
双击打开,并查看右下角内容。如图:
滚轮翻动内容,如果发现有标题为 B01.有意思的小东西 - pdf转word【python实用工具】,则说明找对了地方。
4,找到目标,得到下载地址。
pic=http://i0.hdslb.com/bfs/archive/88368f9b03030a6f86d1a2e9ff1e8a2a7d5ff3ea.jpg
它的value就是待下载的链接。
你可以点开试一下:http://i0.hdslb.com/bfs/archive/88368f9b03030a6f86d1a2e9ff1e8a2a7d5ff3ea.jpg
写python代码
上面是一个分析过程,我们想写一个python代码,使之能自动化处理。
#python3
import json
import requests
#获取xlixli的封面图片
def getPictureURL(url):
#设置头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36',
'Referer': 'https://www.bilibili.com'}
# get请求
response = requests.get(url, headers=headers)
# 解析成json数据
content = json.loads(response.text)
# print(content)
statue_code = content.get('code')
if statue_code == 0:
return content.get('data').get('pic')
else:
print('该AV号不存在')
return -1
def downloadPicture(download_url, save_path):
img_r = requests.get(download_url)
with open(save_path, 'wb') as f:
f.write(img_r.content)
print("下载完成!")
def main(av, save_path="封面图片.jpg"):
av_url = "https://api.bilibili.com/x/web-interface/view?aid={}".format(av)
download_url = getPictureURL(av_url)
downloadPicture(download_url, save_path)
if __name__ == "__main__":
av = input("请输入AV号(如78175545):")
main(av)
成功
一个大坑
get的url是https://api.bilibili.com/x/web-interface/view?aid=78175545
,而不是https://api.bilibili.com/x/web-interface/view?aid=av78175545
。
否则报错:
为此,我走了不少弯路。还以为要加cookie啥的,但一想我就算没登陆也可以查看视频啊。
参考资料
python 爬取B站封面