Python爬取動態載入的視訊(梨視訊,xpath)
步驟
1.選擇一個生活頁面,按F12,選擇Elements欄,點選左邊的箭頭,把滑鼠移到某個視訊上面,下欄會定位到其所在的標籤,發現這些標籤都是在<li class="categoryem">標籤下
2.迴圈li標籤內的a標籤裡href的內容,拼接後是每個視訊的詳情頁地址
3.在視訊詳情頁上,檢視視訊詳情頁面的載入方式,發現網頁原始碼中找不到,說明該頁面是動態載入的,這樣就無需向詳情頁傳送請求了直接向該地址傳送即可(傳送了也找不到)
4.通過network檢視詳情頁的請求網址 chenchen.cc
5.朝該詳情頁傳送請求發現獲取不到
import requests
url='
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.2242 SLBChan/23'
}
video_page=requests.get(url=url,headers=headers).content
with open('./a.html','wb') as fp:
fp.write(video_page)
"resultCode":"5",
"resultMsg":"該文章已經下線!",
"systemTime": "1647781607669"
}
6.原因是有防爬措施之防盜鏈,得定義一個請求頭加上Referer引數再去請求網站
7.去瀏覽器上覆制視訊的地址發現與我們拿到的有地方不一樣
8.接著去想如何去替換核心資料,去拿到真正的視訊地址,研究發現通過systemTime即可
{
"resultCode":"1",
"resultMsg":"success", "reqId":"8544a57d-1ad8-4d74-83ca-740fd9960052",
"systemTime": "1647780126911",
"videoInfo":{"playSta":"1","video_image":"https://image1.pearvideo.com/cont/20220318/11549967-150204-1.png","videos":{"hdUrl":"","hdflvUrl":"","sdUrl":"","sdflvUrl":"","srcUrl":"}}
}
程式碼示例
複製
#匯入模組
import requests
from lxml import etree
import time
import os
# 建立存放視訊的目錄
if not os.path.exists(r'./video'):
os.mkdir(r'./video')
#1.生活頁面的url
url='
#UA偽裝
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.2242 SLBChan/23'
}
#2.傳送get請求獲取頁面資料
page_text=requests.get(url=url,headers=headers).text
# 3.使用xpath進行資料解析
#3.1.例項化,將網上獲取的原始碼資料載入到該物件中
tree=etree.HTML(page_text)
# 3.2解析出視訊詳情連結
li_list=tree.xpath('//*[@id="listvideoListUl"]/li')
for li in li_list:
#1.解析出視訊連結相對地址href="video_1755550"
datail_url=li.xpath('./div/a/@href')[0]
#解析出視訊名稱
name=li.xpath('./div/a/div[2]/text()')[0]+'.mp4'
# 每個視訊的href _後面的一串數字都不同,將其拆分取出
video_id = datail_url.split('_')[-1]
#視訊詳情頁的url
video_url='
headers = {
"Referer": "%s" % video_id #Referer告訴伺服器我是從哪個頁面連結過來的
}
#2.發起請求,獲取視訊詳情頁資料
res1 = requests.get(url=video_url,params={'contId': video_id},headers=headers)
# 避免訪問次數過多,延遲
time.sleep(1)
#返回json物件
data_dict = res1.json()
#視訊地址srcUrl
src_url = data_dict['videoInfo']['videos']['srcUrl']
systemTime = data_dict['systemTime']
#通過字串替換拼接成真正地址
real_url = src_url.replace(systemTime, 'cont-%s' % video_id)
#發起請求,獲取視訊二進位制資料
res2 = requests.get(real_url).content
#拼接成視訊儲存路徑
file_path = os.path.join('./video', name)
#進行持久化儲存
with open(file_path, 'wb')as fp:
fp.write(res2) #寫入
print('%s 下載成功' % name)
-----------------------------------
©著作權歸作者所有:來自51CTO部落格作者caichen.cc的原創作品,請聯絡作者獲取轉載授權,否則將追究法律責任
Python爬取動態載入的視訊(梨視訊,xpath)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69920392/viewspace-2878995/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python愛奇藝VIP視訊爬蟲爬取下載Python爬蟲
- python 爬取騰訊視訊的全部評論Python
- python爬蟲練習--爬取虎牙主播原畫視訊Python爬蟲
- 如何爬取視訊的爬蟲程式碼原始碼爬蟲原始碼
- Python爬蟲訓練:爬取酷燃網視訊資料Python爬蟲
- opencv python 從攝像頭獲取視訊/從檔案獲取視訊 /儲存視訊OpenCVPython
- 音視訊--視訊入門
- php短視訊原始碼,vue遞迴動態載入選單PHP原始碼Vue遞迴
- Dynamic Wallpaper視訊動態桌布
- 多執行緒爬取B站視訊執行緒
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- OpenCV-Python 視訊讀取OpenCVPython
- 新手寫的視訊爬蟲爬蟲
- 爬取B站視訊播放量及資料視覺化視覺化
- Golang 爬蟲快速入門 | 獲取 B 站全站的視訊資料Golang爬蟲
- Mac視訊動態桌布:Dynamic WallpaperMac
- IOS播放視訊載入之前的logoiOSGo
- 音視訊--音訊入門音訊
- 音視訊–音訊入門音訊
- 使用 Python 下載 B 站視訊Python
- python基礎教程視訊下載Python
- linux動態注入(含視訊演示)Linux
- Mac視訊動態桌布:Dynamic Wallpaper MacMac
- Android 視訊縮圖的快取機制和非同步載入Android快取非同步
- 實用爬蟲-03-爬取視訊教程課程名+連結+下載圖片爬蟲
- Mac上好用的視訊動態桌布:Dynamic WallpaperMac
- Python-OpenCV 處理視訊(一)(二): 輸入輸出 視訊處理PythonOpenCV
- 【玩具】獲取B站視訊的音訊片段音訊
- php ffmpeg 視訊擷取PHP
- Python下獲取視訊的旋轉角度資訊Python
- 視訊模組 視訊分析
- 除錯JS獲得動態視訊地址除錯JS
- 4K動態視訊桌布「Dynamic Wallpaper」
- Downie 4視訊下載軟體 Mac最好用的視訊下載軟體Mac
- Principle 高請視訊教程入門初級試學視訊教程免費下載
- Python-OpenCV 處理視訊(二): 視訊處理PythonOpenCV
- 段友福利:Python爬取段友之家貼吧圖片和小視訊Python
- [譯] 網速敏感的視訊延遲載入方案