学习前提1、了解python基础语法

2、了解re、selenium、BeautifulSoup、os、requests等python第三方库

1.引入库

爬取网站视频需要引入的第三方库:

import os

from selenium import webdriver

import requests

from bs4 import BeautifulSoup

import re

模块用处:1、os模块:文件目录操作模块,用于创建或者删除目录或文件。

2、selenium模块:python请求模块之一,用于某些特殊请求。

3、requests模块:用于请求网页地址。

4、BeautifulSoup模块:用于解析网页,获取页面元素或内容。

5、re模块:正则表达式,本程序中用于匹配视频链接。

2.请 求 网页地址

请求页面:

"""请求页面"""

header = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"

} #请求

url = "http://www.kakadm.com/anime/2417/" #网页地址,这里以卡卡动漫中的无限斯特拉托斯为例

r = requests.get(url, headers=header)

html = r.text #以二进制打印页面

由上述代码获取如下页面:

请求头(反爬机制中的一种):headers中包含网页请求中的请求头,每一个浏览器都有属于自己的请求头,因此需要更改,以免请求失败

3.解析网页,获取播放链接

解析上述页面:

"""解析页面"""

soup = BeautifulSoup(html, "html.parser")

urls = soup.find("div", class_="movurl").find_all("a") #查找视频播放链接

videourls = []

for u in urls:

videourls.append(u.get("href")) #由分析网页元素可知,仅获取链接部分内容

# 获取视频播放地址

str = "http://www.kakadm.com/"

for index, item in enumerate(videourls):

videourls[index] = str + item #加上前缀,获取13个视频播放链接

由上述代码获取如下页面:

4.解析网页,获取视频源链接,即获取后缀名含.mp4的链接

由上述代码获取视频播放页面后,获取源视频链接:

# 请求获取视频源mp4

videos = []

title = []

chrome_options = webdriver.ChromeOptions

# 使用headless无界面浏览器模式,即不需要打开浏览器

chrome_options.add_argument('--headless') # 增加无界面选项

chrome_options.add_argument('--disable-gpu') # 如果不加这个选项,有时定位会出现问题

flag = 0

name = ''

for u in videourls:

# 启动浏览器,获取网页源代码

b = webdriver.Chrome(options=chrome_options) # 建立Chrome的驱动

b.implicitly_wait(10) # 隐式等待,动态查找元素

b.get(u) # 在Chrome上打开网址

# 获取视频名字,如:无限斯特拉托斯

if flag == 0:

soup = BeautifulSoup(html, "html.parser")

name = soup.find("title").string.split('-')[0] # 获取标签内的内容

flag = 1

# 进入iframe内嵌网页

b.switch_to.frame("playbox") # 针对iframe标签,(id)

html = b.page_source # 打印页面

soup = BeautifulSoup(html, "html.parser")

t = soup.find("title").string.split(' ')[0] # 视频命名

v = re.findall(r'(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*,]|(?:%[0-9a-fA-F][0-9a-fA-F]))+.mp4)',

html) # 获取mp4网址

t = name + " " + t

title.append(t)

videos.append(v)

print(v)

b.quit # 退出

由上述代码获取如下视频源链接:

注意:

在本例子中,卡卡动漫里的视频源链接放在ifame标签中,这是基本反爬机制之一。ifame标签会隐藏其内的内容,用requests模块不能直接访问,需要在浏览器中访问,即需要selenium模块,通过针对iframe标签的方法 b.switch_to.frame(id)

打开浏览器来访问iframe标签,并获取隐藏其中的视频源链接。

5.下载视频,并储存到指定文件夹

由上述代码获取视频源链接后,下载到指定文件目录:

"""下载mp4视频"""

i = 0 # 显示当前下载第几个视频

j = 0 # 遍历视频标题列表

# 创建视频文件目录

path = 'D:SoftdownloadPythonvideos{}'.format(name)

if os.path.exists(path) == False: # 如果文件不存在

os.mkdir(path)

for index, item in enumerate(videos):

i += 1

print("正在下载第{}个视频".format(i))

file_name = title[j] + '.mp4' # 命名成mp4格式

j += 1

r = requests.get(videos[index][0], headers=header) # 请求里面的网址

with open(path + file_name, 'wb') as f: # 在指定文件夹下载视频,没有就创建

f.write(r.content)

由上述代码会建立如下文件目录:

还是不难的哈!希望能从文中学到你想要得到的!

python网络爬虫爬取视频_Python网络爬虫——爬取小视频网站源视频!自己偷偷看哦!...相关推荐

  1. python网络爬虫_Python网络爬虫——爬取视频网站源视频!

    原标题:Python网络爬虫--爬取视频网站源视频! 学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 ...

  2. python3下载网页视频_Python网络爬虫——爬取小视频网站源视频!自己偷偷看哦!...

    学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 1.引入库 PS:如有需要Python学习资料的小伙伴 ...

  3. Python网络爬虫——爬取小视频网站源视频!自己偷偷看哦!

    学习前提 1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 1.引入库 PS:如有需要Python学习资料的小伙伴 ...

  4. python网络爬虫与信息提取视频_Python网络爬虫与信息提取入门5

    Part19 实例5:IP地址归属地的自动查询 怎么查询一个IP地址的归属呢?比如说某一个IP地址他是来自于北京.上海还是美国呢?我们用一个python 程序来判断.当然你要判断一个地址的归属地,你必 ...

  5. python开源爬虫项目违法吗_Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据...

    数据挖掘入门与实战 公众号: datadw scrapy_jingdong[9]- 京东爬虫.基于scrapy的京东网站爬虫,保存格式为csv.[9]: https://github.com/taiz ...

  6. python网络通信的几种方式_python网络-计算机网络基础(23)

    一.网络简介 网络是由节点和连线构成,表示诸多对象及其相互联系. 一个人玩: 两个人玩: 多个人玩: 说明 网络就是一种辅助双方或者多方能够连接在一起的工具 如果没有网络可想单机的世界是多么的孤单 使 ...

  7. python爬虫库的功能_Python学习爬虫掌握的库资料大全和框架的选择的分析

    学Python,想必大家都是从爬虫开始的吧.毕竟网上类似的资源很丰富,开源项目也非常多. Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 当我们在浏览器中输入一个url后回车,后台会发生 ...

  8. python爬虫微博热搜_Python网络爬虫之爬取微博热搜

    微博热搜的爬取较为简单,我只是用了lxml和requests两个库 url= https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&am ...

  9. python滚动条翻页爬取数据_Python网络爬虫之Selenium 处理滚动条【第十四节】

    Selenium 处理滚动条selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了 当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的. ...

最新文章

  1. 再见,Python 2.x
  2. Nike Barkley Foamposite Max “Rayguns”
  3. springboot和kafka集成
  4. 小白如何入门Mybatis?这里有答案
  5. :nth-child(n)与:nth-of-type(n)为啥显示不对呢
  6. J storm战队成员_DOTA2J.Storm战队介绍-DOTA2ESL孟买站预选赛J.Storm战队介绍_牛游戏网攻略...
  7. php文件怎么制定编码格式,php文件编码格式对结果有影响
  8. python writerow参数_csv文件的输出结果TypeError writerow()接受2个位置参数,但给出了5个...
  9. 设置最小值_WELSIM中设置有限元计算结果的最大最小值
  10. bug的定义,分类与要求
  11. java redis jar_Java使用Redis
  12. LeetCode 198. 打家劫舍(动态规划)
  13. android多线程中更新ui,Android 在子线程中更新UI
  14. 云计算平台构建与实验设计
  15. 【Tensorflow教程笔记】TensorFlow Serving
  16. FusionSphere虚拟化套件
  17. mysql ping命令_Ping命令详解
  18. 手机连上wif显示无法连接服务器,打开exchange management shell无法连接到服务器
  19. arduino声音传感器与二极管_如何将声音传感器与Arduino连接 并实现继电器控制项目...
  20. 插入U盘无反应解决方法

热门文章

  1. Windows学习总结(17)——Windows 15个重要运行命令
  2. Tomcat学习总结(13)—— Tomcat常用参数配置说明
  3. 淘宝的开源分布式文件系统TFS
  4. Git学习总结(4)——我的Git忽略文件与忽略文件提交规则和配置总结
  5. python中pip不可用_python – pip无法确认SSL证书:SSL模块不可用
  6. bootstrap-vue 中 model 基础用法
  7. vue之自行实现派发与广播-dispatch与broadcast
  8. 将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小)
  9. Vue 应用性能优化指南(转)
  10. 《PIC微控制器项目设计:C语言》一第2章 mikroC Pro for PIC编程语言