婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python爬蟲爬取ts碎片視頻+驗證碼登錄功能

Python爬蟲爬取ts碎片視頻+驗證碼登錄功能

熱門標簽:400電話辦理費用收費 申請辦個400電話號碼 柳州正規電銷機器人收費 深圳網絡外呼系統代理商 千呼ai電話機器人免費 騰訊地圖標注有什么版本 外呼系統前面有錄音播放嗎 鎮江人工外呼系統供應商 高德地圖標注字母

目標:爬取自己賬號中購買的課程視頻。

一、實現登錄賬號

這里采用的是手動輸入驗證碼的方式,有能力的盆友也可以通過圖像識別的方式自動填寫驗證碼。登錄后,采用session保持登錄。

1.獲取驗證碼地址                                                                               

第一步:首先查看驗證碼對應的代碼,可以從圖中看到驗證碼圖片的地址是:https://per.enetedu.com/Common/CreateImage?tmep_seq=1613623257608

顏色標紅的部分tmep_seq=1613623257608,是為了解決瀏覽器緩存問題加的時間戳,因此真正的驗證碼圖片地址是:https://per.enetedu.com/Common/CreateImage

第二步:找出登錄時提交的表單內容和POST地址。

(1) 不填寫用戶名密碼和驗證碼,直接點擊登錄,使用Chrome瀏覽器的Network檢查,找到POST地址:https://per.enetedu.com/AdminIndex/LoginDo

(2) 繼續向下看,找到提交的表單 Form Data。

因此帶有驗證碼的登錄代碼如下:

import requests
from PIL import Image
 
#用戶名-密碼-驗證碼方式,登錄
CaptchaUrl = "https://per.enetedu.com/Common/CreateImage" #獲取驗證碼地址
PostUrl = "https://per.enetedu.com/AdminIndex/LoginDo"  #post登錄信息地址
 
client = requests.Session()
username = '替換為自己的用戶名'
password = '替換為自己的密碼'
 
qr_code = client.get(CaptchaUrl)
open('login.jpg', 'wb').write(qr_code.content) #將驗證碼圖片保存至本地
img = Image.open('login.jpg')
img.show()  #打開圖片
 
code = input("請輸入驗證碼: \n") #輸入驗證碼
postData = {      #構造POST表單
 'email': username,
 'pwd': password,
 'validateCode': code,
 'x': '22',
 'y': '19'
}
result = client.post(PostUrl,postData) #向PostUrl提交表單

二、實現ts碎片視頻下載,并轉換為mp4格式

1.分析視頻下載地址

登錄成功后,檢查視頻播放div對應的代碼,企圖找到視頻地址直接保存至本地。結果,如下圖所示,整個視頻是被分割成一段一段的.ts文件,分段加載到頁面中播放。GET每段視頻的地址為右側紅框圈起來的部分。

百度后才知道,整個視頻如何分段是由一個m3u8文件來決定的。m3u8文件中的內容如下所示,記錄了每段視頻start和end的編號。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:10
#EXTINF:10.000000,
start_0-end_765064-record.gv.ts
#EXTINF:10.000000,
start_765064-end_1769567-record.gv.ts
#EXTINF:10.000000,
start_1769567-end_2600798-record.gv.ts
#EXTINF:10.000000,
start_2600798-end_3593502-record.gv.ts
#EXTINF:10.000000,
start_3593502-end_4500784-record.gv.ts
#EXTINF:10.000000,
start_4500784-end_5399861-record.gv.ts
#EXTINF:10.000000,
start_5399861-end_6288622-record.gv.ts
#EXTINF:10.000000,
start_6288622-end_7044459-record.gv.ts
#EXTINF:10.000000,
start_7044459-end_7878487-record.gv.ts
#EXTINF:10.000000,
start_7878487-end_8811793-record.gv.ts
#EXTINF:10.000000,

因此,下載視頻的關鍵是獲取m3u8文件,通過這個視頻的m3u8文件來分段下載視頻。

我是人工找出m3u8的下載地址,暫時還沒研究出來怎么通過視頻地址自動解析出m3u8地址。找的方法很簡單,還是在Chrome的Network控制臺找。打開Network控制臺,刷新頁面,就可以找到如圖所示的m3u8文件。查看m3u8文件的相關信息,可以看到紅框圈起來的地址就是這個視頻的m3u8下載地址。

對比兩個地址,可以發現文件名前的地址相同,視頻下載地址即為"標紅地址"+"m3u8文件中列出的視頻段文件名":

https://bcdn.enetedu.com/conv/cdnfile/video/2016_06_27/1467034852884_f5821b/hi/record.m3u8

https://bcdn.enetedu.com/conv/cdnfile/video/2016_06_27/1467034852884_f5821b/hi/start_643887-end_1083181-record.gv.ts

因此可以將這部分地址設為:urlroot = https://bcdn.enetedu.com/conv/cdnfile/video/2016_06_27/1467034852884_f5821b/hi

為了方便下載其他視頻時動態修改,改為動態截?。?/p>

url = input("請輸入m3u8文件地址:")
urlRoot=self.url[0:url.rindex('/')]

2.批量下載ts視頻片段

這一步使用上一步拼接的地址循環下載ts視頻即可。下載時,使用登錄時創建的session下載。

session是會話的意思,它可以讓服務器“認得”客戶端。簡單理解就是,把每一個客戶端和服務器的互動當作一個“會話”。既然在同一個“會話”里,服務器自然就能知道這個客戶端是否登錄過。代碼如下:

client = requests.Session() 
client.post(PostUrl,postData) #登錄
 
resp = client.get(download_path) #下載

碎片拼接的方法:下載完第一個ts片段后,直接在該文件后面繼續寫第二個ts片段,以此類推。而不是新建一個文件寫入。與驗證碼登錄結合起來,完整代碼如下:

import requests
from PIL import Image
 
import sys
import m3u8
import time
import os
 
#用戶名-密碼-驗證碼方式,登錄
CaptchaUrl = "https://per.enetedu.com/Common/CreateImage" #獲取驗證碼地址
PostUrl = "https://per.enetedu.com/AdminIndex/LoginDo"  #post登錄信息地址
 
client = requests.Session()
username = '526257482@qq.com'
password = 'dashuju_9514'
 
qr_code = client.get(CaptchaUrl)
open('login.jpg', 'wb').write(qr_code.content) #將驗證碼圖片保存至本地
img = Image.open('login.jpg')
img.show()  #打開圖片
 
code = input("請輸入驗證碼: \n") #輸入驗證碼
postData = { #構造POST表單
 'email': username,
 'pwd': password,
 'validateCode': code,
 'x': '56',
 'y': '19'
}
result = client.post(PostUrl,postData) #向PostUrl提交表單
 
#循環下載ts視頻
class VideoCrawler():
 
 def __init__(self,url):
 
  super(VideoCrawler, self).__init__()
  self.url=url
  self.final_path=r"D:\Download\Film"
  
 
 #下載并解析m3u8文件
 def get_url_from_m3u8(self,readAdr):
  print("正在解析真實下載地址...")
  with open('temp.m3u8','wb') as file:
   file.write(requests.get(readAdr).content)
  m3u8Obj=m3u8.load('temp.m3u8')
  print("解析完成")
  return m3u8Obj.segments
 
 def run(self):
  print("Start!")
  start_time=time.time()
  realAdr = self.url #m3u8下載地址
  urlList=self.get_url_from_m3u8(realAdr) #解析m3u8文件,獲取下載地址
  urlRoot=self.url[0:self.url.rindex('/')]
  i=1
  outputfile=open(os.path.join(self.final_path,'%s.ts'%self.fileName),'wb')#初始創建一個ts文件,之后每次循環將ts片段的文件流寫入此文件中從而不需要在去合并ts文件
  
 
  for url in urlList:
   try:    
    download_path = "%s/%s" % (urlRoot, url.uri) #拼接地址
    resp = client.get(download_path) #使用拼接地址去爬取數據
    progess = i/len(urlList)#記錄當前的爬取進度
    outputfile.write(resp.content) #將爬取到ts片段的文件流寫入剛開始創建的ts文件中
    sys.stdout.write('\r正在下載:{},進度:{:.2%}'.format(self.fileName,progess))#通過百分比顯示下載進度
    sys.stdout.flush()#通過此方法將上一行代碼刷新,控制臺只保留一行
   except Exception as e:
    print("\n出現錯誤:%s",e.args)
    continue#出現錯誤跳出當前循環,繼續下次循環
   i+=1
  outputfile.close()
  print("下載完成!總共耗時%d s"%(time.time()-start_time))
  print("開始轉換視頻格式!")
  success = os.system(r'copy /b D:\Download\Film\{0}.ts D:\Download\Film\{0}.mp4'.format(self.fileName)) #ts轉成mp4格式
  if (not success):
   print("格式轉換成功!")
   os.remove(self.final_path+'\\'+self.fileName+".ts") #刪除ts和m3u8臨時文件
   os.remove("temp.m3u8")
 
if __name__=='__main__':
 m3u8_addr = input("輸入m3u8文件下載地址:\n") 
 crawler=VideoCrawler(m3u8_addr)
 crawler.fileName = input("輸入文件名:\n")
 crawler.run()
 quitClick=input("請按Enter鍵確認退出!")

三、總結

代碼可以實現分段加載視頻的爬取功能,其中還有很多細節待完善如:

  • 驗證碼可以通過圖像識別的方法自動識別。
  • 通過解析視頻地址獲取m3u8文件,非計算機專業人使用起來更加友好。
  • 例子中的網站沒有對m3u8文件進行加密,涉及到加密的m3u8還需要加一步解密的過程。

到此這篇關于Python爬蟲爬取ts碎片視頻+驗證碼登錄功能的文章就介紹到這了,更多相關Python爬蟲爬取視頻內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 用Python爬蟲破解滑動驗證碼的案例解析
  • python網絡爬蟲實現發送短信驗證碼的方法
  • python爬蟲如何解決圖片驗證碼
  • Python爬蟲模擬登陸嗶哩嗶哩(bilibili)并突破點選驗證碼功能
  • Python3爬蟲里關于識別微博宮格驗證碼的知識點詳解
  • Python3爬蟲關于識別點觸點選驗證碼的實例講解
  • Python3爬蟲關于識別檢驗滑動驗證碼的實例
  • Python3爬蟲中識別圖形驗證碼的實例講解
  • Python3網絡爬蟲開發實戰之極驗滑動驗證碼的識別
  • python爬蟲解決驗證碼的思路及示例
  • Python爬蟲實現驗證碼登錄代碼實例
  • python爬蟲之驗證碼篇3-滑動驗證碼識別技術
  • python爬蟲之自動登錄與驗證碼識別
  • Python爬蟲爬驗證碼實現功能詳解
  • Python爬蟲模擬登錄帶驗證碼網站
  • 爬蟲Python驗證碼識別入門

標簽:烏蘭察布 平頂山 烏蘭察布 哈爾濱 郴州 大慶 海南 合肥

巨人網絡通訊聲明:本文標題《Python爬蟲爬取ts碎片視頻+驗證碼登錄功能》,本文關鍵詞  Python,爬蟲,爬取,碎片,視頻,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python爬蟲爬取ts碎片視頻+驗證碼登錄功能》相關的同類信息!
  • 本頁收集關于Python爬蟲爬取ts碎片視頻+驗證碼登錄功能的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久久一区二区| 国产精品国产自产拍高清av王其| 成人精品在线视频观看| 国产一区欧美日韩| 日本sm残虐另类| 琪琪久久久久日韩精品| 奇米一区二区三区| 久久99九九99精品| 国产伦精品一区二区三区视频青涩 | 国产在线国偷精品产拍免费yy | 中文字幕字幕中文在线中不卡视频| 久久久美女艺术照精彩视频福利播放| 欧美一级片在线观看| 欧美一卡二卡三卡| 精品久久国产字幕高潮| 欧美国产丝袜视频| 亚洲黄网站在线观看| 亚洲一二三四在线| 日本不卡一二三区黄网| 国产精品中文字幕日韩精品| 成人免费视频caoporn| 色八戒一区二区三区| 欧美裸体bbwbbwbbw| 久久综合狠狠综合久久综合88 | 亚洲日本护士毛茸茸| 亚洲小说春色综合另类电影| 青青草视频一区| 国产精品18久久久久久vr| proumb性欧美在线观看| 欧美精品在线一区二区| 国产人伦精品一区二区| 亚洲一区二区三区四区在线观看 | 在线免费观看视频一区| 大白屁股一区二区视频| 成人综合在线观看| 欧美激情在线一区二区三区| 亚洲黄色片在线观看| 一本色道亚洲精品aⅴ| 日韩久久久精品| www.亚洲在线| 欧美一区二区在线看| 久久久久亚洲蜜桃| 香蕉成人啪国产精品视频综合网| 国产一区二区伦理| 色噜噜狠狠色综合中国| 久久综合色鬼综合色| 亚洲一本大道在线| 波多野结衣亚洲| xf在线a精品一区二区视频网站| 亚洲综合免费观看高清完整版在线 | 激情五月婷婷综合| 欧美亚洲国产一区在线观看网站| 久久品道一品道久久精品| 日本欧美肥老太交大片| 欧美天堂亚洲电影院在线播放| 欧美激情一区二区三区在线| 国产一区在线不卡| 欧美电视剧在线看免费| 午夜精彩视频在线观看不卡| 97久久超碰精品国产| 国产亚洲精久久久久久| 麻豆精品一区二区三区| 欧美撒尿777hd撒尿| 亚洲精品日韩专区silk| 91视频xxxx| 亚洲四区在线观看| gogogo免费视频观看亚洲一| 欧美激情在线观看视频免费| 极品少妇xxxx精品少妇| 欧美本精品男人aⅴ天堂| 免费在线观看成人| 日韩免费观看高清完整版在线观看| 亚洲高清免费视频| 欧美日韩免费电影| 视频一区视频二区在线观看| 欧美日韩在线免费视频| 亚洲成av人片一区二区三区| 欧美性感一区二区三区| 亚洲r级在线视频| 欧美妇女性影城| 伦理电影国产精品| 26uuu亚洲| 福利视频网站一区二区三区| 国产精品私人影院| 在线亚洲一区二区| 亚洲.国产.中文慕字在线| 欧美日韩电影在线播放| 在线精品亚洲一区二区不卡| 在线观看av不卡| 欧洲精品中文字幕| 8v天堂国产在线一区二区| 7777精品伊人久久久大香线蕉 | 午夜视频久久久久久| 精品国产乱码91久久久久久网站| 国产精品美女视频| 91国产免费看| 天使萌一区二区三区免费观看| 欧美亚洲动漫精品| 黑人巨大精品欧美黑白配亚洲| 欧美国产精品劲爆| 欧美亚洲国产bt| 激情五月婷婷综合网| 最好看的中文字幕久久| 欧美一区二区福利在线| 成人网男人的天堂| 午夜久久久久久电影| 26uuu欧美| 欧美性大战xxxxx久久久| 六月丁香婷婷久久| 国产精品久久久久久久久搜平片| 欧美综合亚洲图片综合区| 九一久久久久久| 一区二区三区丝袜| 国产日韩欧美高清在线| 欧美日韩www| 丰满岳乱妇一区二区三区| 日韩一区精品字幕| 国产精品电影院| wwwwww.欧美系列| 欧美精品 国产精品| 91丨九色丨尤物| 久久99精品久久久| 午夜免费久久看| 自拍偷在线精品自拍偷无码专区| 日韩无一区二区| 欧美日韩一区中文字幕| 99re8在线精品视频免费播放| 久久国产精品色婷婷| 午夜私人影院久久久久| 亚洲日本va在线观看| 国产亚洲一二三区| 欧美一区二区在线看| 欧美日韩精品一区二区三区四区| 懂色av中文一区二区三区| 蜜臀av亚洲一区中文字幕| 亚洲黄色小说网站| √…a在线天堂一区| 中文成人av在线| 国产亲近乱来精品视频| 日韩三级免费观看| 91精品国产综合久久久久| 欧美精品v日韩精品v韩国精品v| 色婷婷综合视频在线观看| 99精品视频一区二区三区| 国产成a人亚洲| 韩国理伦片一区二区三区在线播放| 亚洲大片在线观看| 亚洲午夜在线电影| 亚洲黄网站在线观看| 伊人婷婷欧美激情| 亚洲国产成人精品视频| 亚洲综合色婷婷| 一片黄亚洲嫩模| 亚洲二区在线观看| 午夜精品在线视频一区| 亚洲色图丝袜美腿| 亚洲女与黑人做爰| 一区二区三区国产| 亚洲精选免费视频| 欧美成人伊人久久综合网| 色综合久久久网| 色综合一个色综合| 91视频com| av不卡在线播放| 国产一区二区美女诱惑| 视频精品一区二区| 久久97超碰色| 国产99精品在线观看| 国产亚洲成av人在线观看导航| 91精品国产综合久久国产大片| 精品理论电影在线观看 | 99久久精品国产精品久久| 不卡欧美aaaaa| 欧美亚洲综合另类| 精品国产乱码久久久久久夜甘婷婷| 精品黑人一区二区三区久久| 欧美国产日本韩| 日韩精品久久久久久| 国产在线观看免费一区| 99久久久无码国产精品| 欧美精品乱码久久久久久| 欧美成人精品1314www| 中文字幕一区二区三区精华液| 亚洲综合色丁香婷婷六月图片| 美腿丝袜亚洲一区| 91在线免费视频观看| 欧美一区二区网站| 国产情人综合久久777777| 手机精品视频在线观看| 成人精品视频一区二区三区尤物| 欧美系列日韩一区| 国产欧美精品国产国产专区| 五月天一区二区| av亚洲产国偷v产偷v自拍| 欧美一区二区三区免费| 亚洲人快播电影网| 国产精品系列在线播放| 欧美夫妻性生活| 亚洲愉拍自拍另类高清精品| 一本大道久久精品懂色aⅴ|