Python3 使用selenium-wire捕获动态网页视频资源文件
1.环境安装
idea虚拟环境
谷歌浏览器
pip3 install selenium
pip3 install selenium-wire
2.Python3代码
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver
def getVideo(url):
# 创建一个请求头对象
chromeOptions = Options()
# 设置无头模式,浏览器处于后台运行,不会在前台显示
chromeOptions.add_argument('--headless')
# 设置lang和User-Agent来模拟真人点击,防止被反爬虫检测到
# 设置语言为中文 字符编码为UTF-8
chromeOptions.add_argument('lang=zh_CN.utf-8')
# 设置user-agent用来模拟EDGE浏览器
UserAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/111.0.0.0'
chromeOptions.add_argument(f'User-Agent={UserAgent}')
# 启动浏览器并设置chrome_options参数
driver = webdriver.Chrome(chrome_options=chromeOptions)
# 3次重新连接尝试
for i in range(0, 3):
# 开始请求
print(f"第{i}次请求")
driver.get(url)
for request in driver.requests:
if request.url.endswith("mp4") or request.url.endswith("m3u8"):
return {
"code": 200,
"data": request.url
}
driver.close()
return {
"code": 404,
"data": "资源不存在"
}
print(getVideo("寻找视频地址"))
3.运行结果
成功结果
第0次请求
第1次请求
{'code': 200, 'data': 'https://xxxxxxxxxxxxxxx'}
失败结果
第0次请求
第1次请求
第3次请求
{'code': 404, 'data': '资源不存在'}
评论 (0)