本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,,版权归原作者所有,如有问题请及时联系我们以作处理

引言

利用python爬虫进行视频下载,本次文章将对梨视频网站得视频进行爬取,由于爬虫本身介于一个灰色与敏感的地带,所以建议大家在使用爬虫的时候先对网站的限制了解。在此之前作者已经了解,可放心使用。

爬取流程分析第一步:分析url

这次是对梨视频网站的视频进行爬取(https://www.pearvideo.com/)

用python爬虫爬取视频下载_爬虫

在此页面下有许多小视频,随便点击一个查看视频网页的url(https://www.pearvideo.com/video_1713546)

用python爬虫爬取视频下载_python_02
网站视频具有时效性,依据网页更新即可。在此页面下按F12,查看网页代码,会发现找不到视频的url。但点击播放,视频的url就弹出来了(https://video.pearvideo.com/mp4/adshort/20201226/cont-1713546-15547701_adpkg-ad_hd.mp4)自此url也就找出来了。

第二步:对url发起get请求

由于这里出现三个url,在这里三个url都有所用处,详见代码。

第三步:数据获取

有两个,一个是视频的url获取,另外一个是下载视频的url获取。

第四步:保存数据

在这里我们可以直接使用python文件操作的方式进行存储,直接命名带后缀MP4即可。

代码实现

终于到了激动人心的时刻了。老实说,当晚爬出视频的时候确实挺开心的,本人还是python爬虫的初学者,实属不易。

第一步:导入包
import requests
import re
from bs4 import BeautifulSoup
from selenium import webdriver复制代码


第二步:对url发起get请求
def get_url(url,i):
    txt = requests.get(url).text
    soup = BeautifulSoup(txt, 'lxml')
    txt1 = soup.find_all('a')
    con = re.findall(r'<a class="vervideo-lilink actplay" href="(\w.+)"', str(txt1))
    url1 = url + con[i]
    print(url1)
    return url1复制代码


解释一下,参数url是指视频网站url,i是指第几个视频。而代码的意思就是通过获取视频的代号编码,然后与url进行拼接形成视频url。之前分析url也开看出,视频url与网站的url也就相差了video-xxxxx。

第三步:获取视频数据
def get_mp4(url1):
    browser = webdriver.Chrome('chromedriver')
    browser.get(url1)
    button = browser.find_element_by_tag_name('i')
    button.click()
    soup = BeautifulSoup(browser.page_source, 'lxml')
    sp1 = soup.find_all('video')
    mp4_url = re.findall(r'<video autoplay="autoplay" playsinline="" src="([\w\S].+)" '
                         r'style="width: 100%; height: 100%;" webkit-playsinline="" x-webkit-airplay=""></video>',
                         str(sp1))

    mp4 = requests.get(mp4_url[0])
    return mp4.content复制代码


由于在之前查看开发者工具时,发现需要点击播放才可以显示下载视频的url,所以使用模拟浏览器的方法。当然如果你有更好的方法可以留言给我,非常感谢。自此视频数据已获取完毕。

保存视频
url1 = get_url(url,1)
with open('second.mp4', 'wb') as f:
    mp4 = get_mp4(url1)
    f.write(mp4)复制代码


在这里文件的格式可以看到是使用了‘wb’的方法进行存储。运行快慢视网速快慢而定。

结果

用python爬虫爬取视频下载_python_03