For the article , The title is the essence of its concentration. ; So for video , Its cover is probably the most eye-catching frame .B standing , As a hot short video platform recently , There are all kinds of dances in its dance area , Especially house dance , suffer greatly “ Indoorsman ” The love of .( Don't tell me anything, black silk 、jk, I really don't like )
So , I'll try to get it with a crawler B Station cover .
B The station has anti climbing measures , I started by analyzing web pages , To no avail .
Think about it. , It's so hot B standing , I'm definitely not the only one who wants to climb , So , I started searching for relevant articles and videos .
A slap , Soon! , I found one , according to B standing AV No. crawling to get the cover picture of the article , I tried , Why , It really works 🤩( Ecstasy in heart )
# according to aid, Get the cover https://api.bilibili.com/x/web-interface/view?aid=(aid)
Just think about it , Since last year ,B The station began to use BV The no. , Which come of AV Give me the number , In the article AV Where did the number come from ? harm , I read the date of the article again ,2019 year , Oh , That's OK , People write that it will ,B The station hasn't been changed yet
There are more ways than difficulties , Now at least I know how to use AV Number , Then I use BV The number is found AV Don't you just number ? I'm so smart .
Look for it , A big man shared BV The no. api
, Click send to boss page
I have a look at , Oh , still B The boss of the station , You don't talk about martial virtue , Teach others to do B standing ( But I like 🤪 )
# according to BV Number acquisition cid https://api.bilibili.com/x/player/pagelist?bvid=(bvid, Take the beginning BV!) # according to BV Number and cid Get video playlist https://api.bilibili.com/x/player/playurl?cid=(cid)&qn=(qn)&bvid=(bvid, Take the beginning BV!) # according to BV Number and cid obtain aid https://api.bilibili.com/x/web-interface/view?cid=(cid)&bvid=(bvid, Take the beginning BV!)
Summarize the above api, So the idea is , Just have a hand , Follow the boss , That's the line. !
First, according to BV The number is found cid, According to BV Number and cid obtain aid, According to aid Get the cover .
And the data in the crawling process is basically json data . among :
cid
Data in json Of ['data'][0]['cid']
in
aid
Data in json Of ['data']['aid']
in
Cover picture
Data in json Of ['data']['pic']
in
More detailed process , I wrote it in the comments of the code
# -*- coding: UTF-8 -*- # @Time: 2021/8/17 20:12 # @Author: Stars in the distance # @CSDN: https://blog.csdn.net/qq_44921056 import os import json import requests import chardet from fake_useragent import UserAgent # Randomly generate request header ua = UserAgent(verify_ssl=False, path='D:/Pycharm/fake_useragent.json') # Random handover request header def random_ua(): headers = { "accept-encoding": "gzip", # gzip Compression coding It can increase the file transfer rate "user-agent": ua.random } return headers # Create folder def path_creat(): _path = "D:/B Station cover /" if not os.path.exists(_path): os.mkdir(_path) return _path # The crawled page content is json Format processing def get_text(url): res = requests.get(url=url, headers=random_ua()) res.encoding = chardet.detect(res.content)['encoding'] # Uniform character encoding res = res.text data = json.loads(res) # json format return data # according to bv Number acquisition av Number 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'] # obtain 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'] # obtain aid return aid # according to av No. get the cover picture 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'] # Get the picture download connection image = requests.get(url=image_url, headers=random_ua()).content # Get photo return image # Download the cover def download(image, file_name): with open(file_name, 'wb') as f: f.write(image) f.close() def main(): k = 'Y' while k == 'Y': # Cycle all the time according to the user's needs path = path_creat() # Create save B Station cover folder bv = input(" Please enter the name of the video bv Number :") image_name = input(" Please give the cover you want to download a favorite name :") aid = get_aid(bv) image = get_image(aid) file_name = path + '{}.jpg'.format(image_name) download(image, file_name) print(" Cover extraction completed ^_^") k = input(" Press Y Key to continue extraction , Press Q sign out :") if __name__ == '__main__': main()
== Code can be directly copied to run ==, If it helps you , Remember == give the thumbs-up == Oh , It's also the greatest encouragement to the author , The shortcomings can be corrected in the comments section 、 communication .
BV1C5411P7qM
Video of :Online website :https://bigjpg.com/zh
This can be used online , You can enlarge your picture online and do noise reduction . If you are interested, you can try it yourself , I think the effect is OK .
Reference article 1:python Crawling B Station cover
Reference article 2:bilibili new BV Number api
author : Stars in the distance CSDN:https://blog.csdn.net/qq_44921056
This article is only for communication learning , Without the permission of the author , Prohibited reproduced , Let alone for other purposes , Offenders will investigate .