python爬虫 下载视频网站视频

  1. xpath解析页面源码
  2. requests.Session() 解决 status_code 302 网页重定向
  3. selenium 获取网页遇到 iframe 标签解决办法

最近发现一个比较好的视频网站,里面的资源清晰度很高,就想把自己喜欢的美剧下载到本地保存起来慢慢看。

第一步:分析视频链接

  1. 点击视频,进入播放页面

  2. 打开谷歌浏览器f12 点击切换到Network

  3. 点击视频播放按钮,会看到一直有一条条状态刷新出来

  4. 这个网站比较简单,切换到media,就可以看到重定向的原url,和视频的url
    点开第一条url 可以看到请求的url(Reques URL),下面Response Headers【‘location’】就是重定向后的url

    点开下面的url ,发现跟重定向后的url相同,并且复制这个url到浏览器就可以直接下载视频了,这里我就找到了视频下载的url了。

    第二步:切换到Element,定位视频播放的节点。

    1. 这里在 video 标签的 src 属性里面找到了视频的 url ,经过对比发现就是重定向的原 url 。所以我就可以直接获取到视频播放页面源码后用xpath解析出来。
    2. 但是这里的 video 标签 ,在一个 iframe 标签里面,直接用xpath 定位不到。
    3. 只能换selenium 定位。
bro.switch_to.frame(bro.find_element_by_xpath('//*[@id="playleft"]/iframe')) #切换到iframe标签里面 再进行定位
src = bro.find_element_by_xpath('//*[@id="video"]/div[2]/video').get_attribute('src')

第三步:拿到 src 后,用requests.Session() ,获取重定向后的 url

session = requests.Session() #定义一个session对象,用它发起请求
res = session.get(url=src, headers=headers, allow_redirects=False) #allow_redirects=Flase阻止重定向
new_url = res.headers['Location'] #拿到Response Headers['location']

第四步:对重定向后的 url ,发起request.get().content 拿到二进制数据,持久化存储

re = requests.get(url=new_url, headers=headers).content
with open('E:/视频下载/曼达洛人/'+str(i)+'集'+'.mp4', 'wb')as f:f.write(re)

完整代码

import requests
import os
from selenium import webdriver
from selenium.webdriver import ChromeOptionsif not os.path.exists('E:/视频下载/曼达洛人'): os.mkdir('E:/视频下载/曼达洛人')   #新建文件夹option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation']) # 规避检测
bro = webdriver.Chrome(options=option) # 实例化浏览器对象url_x = 'https://www.xxxxxxx.me/play/66-2-{}.html'
for i in range(1, 7):    #循环获取本季所有集视频url = url_x.format(i)bro.get(url)bro.switch_to.frame(bro.find_element_by_xpath('//*[@id="playleft"]/iframe'))src = bro.find_element_by_xpath('//*[@id="video"]/div[2]/video').get_attribute('src') headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36',}session = requests.Session()res = session.get(url=src, headers=headers, allow_redirects=False)new_url = res.headers['Location']print('开始下载第{}集, 耐心等待'.format(i))re = requests.get(url=new_url, headers=headers).contentwith open('E:/视频下载/曼达洛人/'+str(i)+'集'+'.mp4', 'wb')as f:f.write(re)print('曼达洛人第{}集下载完成'.format(i))print('开始下载下一集——————————————————————————————')
print('OVER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
bro.close()

python爬虫 下载视频网站视频相关推荐

  1. python爬虫下载影视网站的电影

    python爬虫下载影视网站的电影 我这边选取了vip网站 F12打开调试抓包模式 搜索影片的名称, 观察看看给那个url地址发送了请求, 我看到了 这个请求需要携带发送数据 而这个数据就是我们要的影 ...

  2. python代码下载视频_小白也能学会用一行Python代码下载任意网站视频

    我们都知道用Python可以批量抓取网络上的图片.文字.视频等,今天小优给大家教一个简单的方法让小白用一行代码就能抓取任意网站上面的视频,但是前提是你要安装好Python环境哦! You-Get Yo ...

  3. mysql教学磁力链_【python小项目】网页爬虫+mysql数据库储存,爬虫xx视频网站视频磁力链接...

    #!/usr/bin/python3 # coding=utf8 import requests from bs4 import BeautifulSoup import pymysql import ...

  4. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

  5. 利用Python爬虫下载王者荣耀教学视频

    前言: 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我给 ...

  6. Python 仅下载B站视频的音频

    Python 仅下载B站视频的音频 因为各音源网站都要会员而且资源都不全,但是B站上所有的歌或者郭德纲的相声是都可以分享的,所以想在B站上下载想要的歌或者其他的音频. 首先打开一个连接https:// ...

  7. python爬虫项目实战教学视频_('[Python爬虫]---Python爬虫进阶项目实战视频',)

    爬虫]---Python 爬虫进阶项目实战 1- Python3+Pip环境配置 2- MongoDB环境配置 3- Redis环境配置 4- 4-MySQL的安装 5- 5-Python多版本共存配 ...

  8. Python爬虫爬取Twitter视频、文章、图片

    Python爬虫爬取Twitter视频.文章.图片 Twitter的Python爬虫 https://github.com/bisguzar/twitter-scraper 2.2k星标 (2020. ...

  9. python爬虫之小说网站--下载小说(正则表达式)

    python爬虫之小说网站--下载小说(正则表达式) 思路: 1.找到要下载的小说首页,打开网页源代码进行分析(例:https://www.kanunu8.com/files/old/2011/244 ...

最新文章

  1. iOS 自动布局框架 – Masonry 详解
  2. Python基础笔记1
  3. mysql 负载 查看_Mysql-命令查询当前正在负载运行的SQL语句
  4. retrofit content-length为0_LiveData+Retrofit 网络请求实战
  5. excel取整函数_数据分析小白学习之路(三)——Excel多练熟能生巧
  6. Python提取数字图片特征向量
  7. Linux 嵌入式启动以及优化(Z)
  8. NOIP模拟测试24「star way to hevaen·lost my music」
  9. mysql c语言教程,C语言调用mysql快速教程(精华篇).pdf
  10. Terasoluna(中文)
  11. DirectX_11_游戏编程入门_1
  12. Ubuntu 20.04安装python3.6版本后terminal终端无法打开
  13. 基于SpringBoot的社区物业管理系统(设计与实现详解)
  14. 计算机蓝屏 代码0000a,win7 64位系统蓝屏代码0x0000000a的原因及解决方法
  15. 关于wireshark安装npcap不成功的问题
  16. python 二维码生成器_python二维码生成器
  17. docker配置centos7(二),dnf,sshd配置及部分其它常用软件
  18. 阿狸心形表白html,qq分组心形图案一颗心
  19. win10易升_小科普 | 彻底关闭Win10自动更新
  20. 中国一百大姓,您排第几?

热门文章

  1. excel制作跨职能流程图_轻松做Visio跨职能流程图(泳道图)
  2. 与、或、非、同或、异或、蕴含的表示 C/C++
  3. Appium 自动化测试 手机操作
  4. 金山办公CEO章庆元:数字化、云化、订阅化趋势下,组织数字办公走向纵深
  5. 美国购房最常用的英文术语全解
  6. Java开发 高可维护性代码规范
  7. win8运行matlab7.0,Win8.1系统中matlab7.0不兼容的解决方法
  8. matlab输出pdf图片超出边框,matlab - 将Matlab Simulink模型保存为PDF,带有紧密的边界框 - 堆栈内存溢出...
  9. fifa11键盘按键_FIFA 20 Player集群
  10. 四川一度智信:拼多多活动报名规则解读