原标题:Python网络爬虫——爬取视频网站源视频!

学习前提

1、了解python基础语法

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

1.引入库

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

import os

from selenium import webdriver

import requests

from bs4 import BeautifulSoup

import re

12345

模块用处:

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

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

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

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

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

2.请求网页地址

请求页面:

"""请求页面"""

header = {

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

} #请求

url = "" #网页地址,这里以卡卡动漫中的无限斯特拉托斯为例

r = (url, headers=header)

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

1234567

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

python 改变网页播放 style设置 python 网页视频_html

请求头(反爬机制中的一种):

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

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

解析上述页面:

"""解析页面"""

soup = BeautifulSoup(html, "")

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

videourls = []

for u in urls:

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

# 获取视频播放地址

str = ""

for index, item in enumerate(videourls):

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

123456789101112

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

python 改变网页播放 style设置 python 网页视频_python网络爬虫_02

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

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

# 请求获取视频源mp4

videos = []

title = []

chrome_options = ()

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

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

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

flag = 0

name = ''

for u in videourls:

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

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

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

(u) # 在Chrome上打开网址

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

if flag == 0:

soup = BeautifulSoup(html, "")

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

flag = 1

# 进入iframe内嵌网页

("playbox") # 针对iframe标签,(id)

html = b.page_source # 打印页面

soup = BeautifulSoup(html, "")

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

v = (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)

(v)

print(v)

() # 退出

12345678910111213141516171819202122232425262728293031323334

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

python 改变网页播放 style设置 python 网页视频_视频播放_03

注意:

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

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

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

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

"""下载mp4视频"""

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

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

# 创建视频文件目录

path = 'D:\Softdownload\Python\\videos\{}\\'.format(name)

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

(path)

for index, item in enumerate(videos):

i += 1

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

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

j += 1

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

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

()

123456789101112131415

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

python 改变网页播放 style设置 python 网页视频_html_04