爬取bili番剧相关内容
生活随笔
收集整理的這篇文章主要介紹了
爬取bili番剧相关内容
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我知道有些二次元肥仔就是喜歡看這些二次元東西,反正我是沒看過,不知道你們怎么樣呢?
今天就給大家分析一下他的視頻列表頁
首先呢,打開網頁,借用開發者工具,檢查分析,看一下網頁源代碼中有沒有你想要的信息,有的話直接解析,沒有的話點開網絡,查看請求,根據關鍵字搜索,看一下請求返回的數據是什么樣的。如果是json的話,直接向這個請求的url發起請求。
然后,將請求來的數據用json.loads()方法轉成json數據
再根據key取出你要獲取的數據。
最后將數據保存下來。
我獲取的是前10頁的數據,數據不多,僅供參考
在此給各位提個醒,爬蟲需謹慎,最好掛個代理,以防被封
代碼如下:
import csv import json import timeimport requestsclass Bili(object):def __init__(self):self.retry = 0self.page = 0self.html = ''self.url = 'https://api.bilibili.com/x/web-interface/newlist?pn=1&ps=20&_=1546868687676&rid=33&type=0&jsonp=jsonp'self.headers = {'Cookie': '你的cookie','Host': 'api.bilibili.com','Referer': 'https://www.bilibili.com/v/anime/serial/?spm_id_from=333.334.b_7072696d6172795f6d656e75.8','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36','Connection': 'keep-alive'}self.save_header()def save_header(self):"""保存到csv中的表頭"""headers = [['番劇名', '圖片鏈接', '播放量', '彈幕量', '投稿時間']]with open('bili.csv', 'w', encoding='utf-8', newline='') as f:writer = csv.writer(f)writer.writerows(headers)def save_csv(self, data_list):"""將數據保存到csv中"""with open('bili.csv', 'a', encoding='utf-8', newline='') as f:writer = csv.writer(f)writer.writerows(data_list)def get_html(self, url):"""獲取網頁源碼"""try:self.retry += 1response = requests.get(url, headers=self.headers)self.html = response.text# print(self.html)except Exception as e:if self.retry > 3:print(f'請求失敗,正在嘗試第{self.retry}次重新請求')time.sleep(3)returnself.get_html(self.url)else:self.retry = 0def get_data(self):"""獲取數據"""data_list = []result = json.loads(self.html)datas = result["data"]["archives"]for d in datas:data = []data.append(d["title"])data.append(d["pic"])data.append(d["stat"]["view"])data.append(d["stat"]["danmaku"])# 創建時間time_local = time.localtime(d["ctime"])ctime = time.strftime("%Y-%m-%d %H:%M:%S", time_local)data.append(ctime)data_list.append(data)self.save_csv(data_list)def run(self):for x in range(1, 11):time.sleep(2)print(f'正在爬取第{x}頁數據,請稍后')url = f'https://api.bilibili.com/x/web-interface/newlist?pn={x}&ps=20&_=1546868687676&rid=33&type=0&jsonp=jsonp'self.get_html(url)self.get_data()if __name__ == '__main__':bili = Bili()bili.run()注:本文為原創,未經本人授權,禁止轉載,交流可加群:872404578
?
總結
以上是生活随笔為你收集整理的爬取bili番剧相关内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tensorflw视频
- 下一篇: 特斯拉专利下载_特斯拉(Tesla)发布