傳說中,有人因為只是遠遠的看了一眼法外狂徒張三就進去了??
我現(xiàn)在是獲取他視頻,豈不是直接終生了??
網(wǎng)友:趕緊跑路吧 ??
好了話不多說,我們直接開始今天的內容吧!
你需要準備
環(huán)境使用
- Python 3.8
- Pycharm
模塊使用
- import requests
- import csv
- import datetime
- import hashlib
- import time
爬蟲實現(xiàn)基本流程
一、數(shù)據(jù)來源分析
- 明確需求
- 明確采集網(wǎng)站以及數(shù)據(jù)
網(wǎng)址: https://space.bilibili.ubdate
數(shù)據(jù): 視頻基本信息: 標題 播放量 評論 彈幕 上傳時間 … - 抓包分析
- 打開開發(fā)者工具: F12 / 右鍵點擊檢查選擇network
- 點擊網(wǎng)頁下一頁 --> XHR 第一條數(shù)據(jù)包就是我們需要的內容
數(shù)據(jù)包: https://api.bilibili.com/x/space/wbi/arc/search?mid=517327498&ps=30&tid=0&pn=3&keyword=&order=pubdate&platform=web&web_location=1550101&order_avoided=true&w_rid=c9a9f931486961175b1e8138d695680e&wts=1690027894
二. 代碼實現(xiàn)步驟 <固定四個大步驟>
- 發(fā)送請求, 模擬瀏覽器對于url地址發(fā)送請求
請求鏈接: 數(shù)據(jù)包鏈接 - 獲取數(shù)據(jù), 獲取服務器返回響應數(shù)據(jù)
開發(fā)者工具: response - 解析數(shù)據(jù), 提取我們需要的數(shù)據(jù)內容
視頻基本信息 - 保存數(shù)據(jù), 把信息數(shù)據(jù)保存表格文件
代碼展示
import time # 導入數(shù)據(jù)請求模塊 第三方模塊 需要安裝 import requests # 導入格式化輸出模塊 from pprint import pprint import datetime # 導入csv模塊 import csv import hashlib # 文章不理解,我還錄制了詳細視頻 # 都放在這個q裙了:708525271 f = open('信息.csv', mode='w', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '標題', '描述', 'BV號', '播放量', '彈幕', '評論', '時長', '上傳時間', ]) csv_writer.writeheader() # 模擬瀏覽器 -> 基本反反爬蟲措施 headers = { # 用戶代理 表示瀏覽器基本身份信息 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } for page in range(1, 11): string = f'keyword=&mid=517327498&order=pubdate&order_avoided=true&platform=web&pn={page}&ps=30&tid=0&web_location=1550101&wts={int(time.time())}6eff17696695c344b67618ac7b114f92' # 實例化對象 md5_hash = hashlib.md5() md5_hash.update(string.encode('utf-8')) # 請求鏈接 url = 'https://api.bilibili.com/x/space/wbi/arc/search' # 請求參數(shù) data = { 'mid': '517327498', 'ps': '30', 'tid': '0', 'pn': page, 'keyword': '', 'order': 'pubdate', 'platform': 'web', 'web_location': '1550101', 'order_avoided': 'true', 'w_rid': md5_hash.hexdigest(), 'wts': int(time.time()), } # 發(fā)送請求 <Response [200]> 響應對象 表示請求成功 response = requests.get(url=url, params=data, headers=headers) for index in response.json()['data']['list']['vlist']: # 時間戳 時間節(jié)點 --> 上傳視頻時間點 date = index['created'] dt = datetime.datetime.fromtimestamp(date) dt_time = dt.strftime('%Y-%m-%d') dit = { '標題': index['title'], '描述': index['description'], 'BV號': index['bvid'], '播放量': index['play'], '彈幕': index['video_review'], '評論': index['comment'], '時長': index['length'], '上傳時間': dt_time, } # 寫入數(shù)據(jù) csv_writer.writerow(dit) print(dit)
?文章來源:http://www.zghlxwxcb.cn/news/detail-626102.html
好了,今天的分享就到這里結束了,咱們下次見文章來源地址http://www.zghlxwxcb.cn/news/detail-626102.html
到了這里,關于Python批量爬取B站法外狂徒張三所有視頻【含jS逆向解密】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!