Python實戰爬蟲——B站封面爬取


街拍美圖的爬取主要還是在崔老師和其他的博客上的基礎上修改的,這篇文章里,我學習了爬取了B站的視頻封面,由於能力有限,代碼只能一次爬取一張。

首先進去B站首頁

 

 然后偶選擇一個你覺得好看的視頻,點進去,還是觀察Network這一欄的信息

 

 

終於,我們找到了一欄信息

 

 在這一欄我們可以看到data中包含了視頻的很多信息,我們直接把pic對應的url在網上搜索,得到了封面,

 

 所以我們現在要做的就是用python從URL=‘https://api.bilibili.com/x/web-interface/view?aid=66698107&cid=115671196’中請求得到結果然后將其中的pic提取出來,下面直接上代碼

 1 import json
 2 import os
 3 import re
 4 import requests
 5 from urllib import request
 6 av = input('請輸入要查詢的AV號:')
 7 url = 'https://api.bilibili.com/x/web-interface/view?aid=%s'% (av,)
 8 
 9 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',
10             'Referer': 'https://www.bilibili.com/v/douga?spm_id_from=333.334.b_62696c695f646f756761.2',
11             #'Accept': 'text / html, application / xhtml + xml, application / xml;q = 0.9, image / webp, image / apng, * / *;q = 0.8, application / signed - exchange;v = b3'
12             #這部分Headers一直報錯,查了博客發現不寫也可以直接爬
13             #'Accept-Encoding':'gzip, deflate, br',
14             #'Accept - Language':'zh-CN,zh;q=0.9',
15             #'Cache - Control':'max - age =',
16             #'Connection':'keep - alive'
17             }
18 response = requests.get(url,headers=headers)
19 content = json.loads(response.text)
20 # 獲取到的是str字符串 需要解析成json數據
21 statue_code = content.get('code')
22 if statue_code == 0:                                    
23     print(content.get('data').get('pic'))
24     print(content.get('data').get('title'))
25     img=content.get('data').get('pic')
26     name=re.sub("[A-Za-z0-9\!\%\[\]\,\。/]", "",content.get('data').get('title'))        #這部分用了正則,因為發現B站的有些視頻名稱會有些標點符號,會導致不能命名文件
                                                          #所以用正則只提取字符串中中文字符作為文件名
27 request.urlretrieve(img,name+'.jpg') #保存為title 28 else: 29 print('該AV號不存在')
代碼中的statue_code在data數據中可以看到,經過分析知道了其用來表示請求數據的狀態,在statue_code == 0的時候,才會有數據
在文件名這塊由於B站的有些視頻名稱會有些標點符號,會導致不能命名文件,所以加了正則,去掉除中英文以外的其他字符。
最后爬取的結果:

 

 在文件夾中:

 

 歡迎大家來一起探討學習



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM