python selenium chrome network 视频下载 拦截所有网络请求

视频会保存在当前文件夹下

引用文章地址

https://blog.csdn.net/Ambulong/article/details/52672384#commentsedit

https://blog.csdn.net/weixin_41607151/article/details/80486964

#coding:utf-8
 
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
import time
import json
import sys
import urllib
from urllib import request
from selenium.webdriver.chrome.options import Options

class myvideosave():
	"""docstring for myvideosave"""
	def __init__(self):
		super(myvideosave, self).__init__()
		
	def run(self,url):
		chromeOpitons = Options()
        #启动 flash
		prefs= {
		    "profile.managed_default_content_settings.images":1,
		    "profile.content_settings.plugin_whitelist.adobe-flash-player":1,
		    "profile.content_settings.exceptions.plugins.*,*.per_resource.adobe-flash-    player":1,

		}


		chromeOpitons.add_experimental_option('prefs', prefs)
		 
		d = DesiredCapabilities.CHROME

		d['loggingPrefs'] = { 'performance':'ALL' }

		driver = webdriver.Chrome('chromedriver.exe', desired_capabilities=d,chrome_options=chromeOpitons)
		 
		driver.get(url)
		#等待视频播放
		time.sleep(60)
		#获得所有网络请求
		lo=driver.get_log('performance')
		#聚合 请求分类
		datalist={}
		for entry in lo:
		   
		    try:
		         m=json.loads(entry['message'])['message']["params"]["response"]
		         k=m['headers']['Content-Type']
		         url=m['url']
		         if k not in datalist:
		             datalist[k]=[url]
		         else:
		              datalist[k].append(url)
		        
		         #print( "-------------------------")
		    except Exception as e:
		         continue
		#页面存在的 播放过的视频
		videolist=[]
		filename=""
		for x in datalist:
			if x.find("video")>-1:
				filename=x.replace("video/",".")
				videolist=datalist[x]
			
		#保存视频 在当前目录
		for x in range(0,len(videolist)):
			urllib.request.urlretrieve(videolist[x],str(x)+filename)

		#sys.stdout.write 同 print(str(datalist))
		sys.stdout.write(str(datalist))
		sys.stdout.flush()

		#关闭浏览器
		driver.quit()

if __name__ == '__main__':

	url="http://baishi.baidu.com/watch/0450685864807604970.html?page=videoMultiNeed"
	#url="https://www.youtube.com/watch?v=A6m1ToytzF8"
	myvideosave().run(url)

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值