前言
嗨嘍~大家好呀,這里是魔王吶 ? ~!
環(huán)境使用:
-
python 3.8 >>> 運(yùn)行代碼
-
pycharm 2021.2 >>> 輔助敲代碼
模塊使用:
第三方模塊 需要安裝
- import requests >>> 導(dǎo)入數(shù)據(jù)請(qǐng)求模塊
內(nèi)置模塊 你安裝好python環(huán)境就可以了
-
import datetime >>> 對(duì)日期數(shù)據(jù)進(jìn)行處理的主要模塊
-
import hashlib >>> 提供了多種安全方便的摘要方法
-
import time >>> 主要用于時(shí)間的操作和轉(zhuǎn)換
-
import csv >>> 一種通用的文件格式
第三方模塊安裝:
win + R 輸入cmd 輸入安裝命令 pip install 模塊名 (如果你覺(jué)得安裝速度比較慢, 你可以切換國(guó)內(nèi)鏡像源)
python資料、源碼、教程\福利皆: 點(diǎn)擊此處跳轉(zhuǎn)文末名片獲取
實(shí)現(xiàn)基本流程:
一. 數(shù)據(jù)來(lái)源分析
-
明確需求
-
明確采集網(wǎng)站以及數(shù)據(jù)
數(shù)據(jù): 視頻基本信息: 標(biāo)題 播放量 評(píng)論 彈幕 上傳時(shí)間 …
-
-
抓包分析
-
打開(kāi)開(kāi)發(fā)者工具: F12 / 右鍵點(diǎn)擊檢查選擇network
-
點(diǎn)擊網(wǎng)頁(yè)下一頁(yè) --> XHR 第一條數(shù)據(jù)包就是我們需要的內(nèi)容
-
二. 代碼實(shí)現(xiàn)步驟 <固定四個(gè)大步驟>
-
發(fā)送請(qǐng)求, 模擬瀏覽器對(duì)于url地址發(fā)送請(qǐng)求
請(qǐng)求鏈接: 數(shù)據(jù)包鏈接
-
獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
開(kāi)發(fā)者工具: response
-
解析數(shù)據(jù), 提取我們需要的數(shù)據(jù)內(nèi)容
視頻基本信息
-
保存數(shù)據(jù), 把信息數(shù)據(jù)保存表格文件
代碼展示:
導(dǎo)入模塊
import time
import requests
# 導(dǎo)入格式化輸出模塊
from pprint import pprint
import datetime
import csv
import hashlib
f = open('信息.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
'標(biāo)題',
'描述',
'BV號(hào)',
'播放量',
'彈幕',
'評(píng)論',
'時(shí)長(zhǎng)',
'上傳時(shí)間',
])
csv_writer.writeheader()
-
模擬瀏覽器: headers 請(qǐng)求頭
字典數(shù)據(jù)類型, 構(gòu)建完整鍵值對(duì)形式
-
請(qǐng)求鏈接:
請(qǐng)求鏈接和請(qǐng)求參數(shù)分開(kāi)寫(xiě)
問(wèn)號(hào)前面: 請(qǐng)求鏈接
問(wèn)號(hào)后面: 請(qǐng)求參數(shù)/查詢參數(shù)
-
批量替換:
-
選擇替換內(nèi)容, ctrl+R
-
輸入正則命令進(jìn)行匹配替換
(.?): (.)
‘$1’: ‘$2’,
-
模擬瀏覽器 -> 基本反反爬蟲(chóng)措施
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'
實(shí)例化對(duì)象
md5_hash = hashlib.md5()
md5_hash.update(string.encode('utf-8'))
請(qǐng)求鏈接
url = 'https://api.****.com/x/space/wbi/arc/search'
請(qǐng)求參數(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ā)送請(qǐng)求 <Response [200]> 響應(yīng)對(duì)象 表示請(qǐng)求成功
response = requests.get(url=url, params=data, headers=headers)
獲取響應(yīng)數(shù)據(jù):
- response.json() 獲取響應(yīng)json數(shù)據(jù)
<字典數(shù)據(jù)類型>
- response.text 獲取響應(yīng)文本數(shù)據(jù)
<網(wǎng)頁(yè)源代碼 字符串?dāng)?shù)據(jù)>
- response.content 獲取響應(yīng)二進(jìn)制數(shù)據(jù)數(shù)據(jù)
<獲取圖片/視頻/音頻/特定格式文件>
字典數(shù)據(jù) --> 鍵值對(duì)取值
根據(jù)冒號(hào)左邊的內(nèi)容[鍵], 提取冒號(hào)右邊的內(nèi)容[值]
response.json()['data']['list']['vlist'] --> 返回列表
列表里面包含整個(gè)網(wǎng)頁(yè)視頻信息 <N個(gè)視頻內(nèi)容>
列表 / 字典 / 集合 / 元組 --> 數(shù)據(jù)容器 <裝東西的盒子>
lis = [1, 2, 3, 4, 5] --> for循環(huán)遍歷, 把列表里面內(nèi)容一個(gè)一個(gè)單獨(dú)提取
for li in lis:
# 從lis這個(gè)盒子里面, 把元素<東西> 拿出來(lái), 用li變量接收
print(index) 輸入一行效果
pprint(index) 多行展開(kāi)效果
for index in response.json()['data']['list']['vlist']:
# 時(shí)間戳 時(shí)間節(jié)點(diǎn) --> 上傳視頻時(shí)間點(diǎn)
date = index['created']
dt = datetime.datetime.fromtimestamp(date)
dt_time = dt.strftime('%Y-%m-%d')
dit = {
'標(biāo)題': index['title'],
'描述': index['description'],
'BV號(hào)': index['bvid'],
'播放量': index['play'],
'彈幕': index['video_review'],
'評(píng)論': index['comment'],
'時(shí)長(zhǎng)': index['length'],
'上傳時(shí)間': dt_time,
}
寫(xiě)入數(shù)據(jù)
csv_writer.writerow(dit)
print(dit)
尾語(yǔ)
感謝你觀看我的文章吶~本次航班到這里就結(jié)束啦 ??
希望本篇文章有對(duì)你帶來(lái)幫助 ??,有學(xué)習(xí)到一點(diǎn)知識(shí)~
躲起來(lái)的星星??也在努力發(fā)光,你也要努力加油(讓我們一起努力叭)。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-606094.html
最后,宣傳一下呀~??????更多源碼、資料、素材、解答、交流皆點(diǎn)擊下方名片獲取呀????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-606094.html
到了這里,關(guān)于Python實(shí)現(xiàn)Up數(shù)據(jù)信息采集 <內(nèi)含JS逆向解密>的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!