本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,,版权归原作者所有,如有问题请及时联系我们以作处理
引言
利用python爬虫进行视频下载,本次文章将对梨视频网站得视频进行爬取,由于爬虫本身介于一个灰色与敏感的地带,所以建议大家在使用爬虫的时候先对网站的限制了解。在此之前作者已经了解,可放心使用。
爬取流程分析第一步:分析url这次是对梨视频网站的视频进行爬取(https://www.pearvideo.com/)
在此页面下有许多小视频,随便点击一个查看视频网页的url(https://www.pearvideo.com/video_1713546)
网站视频具有时效性,依据网页更新即可。在此页面下按F12,查看网页代码,会发现找不到视频的url。但点击播放,视频的url就弹出来了(https://video.pearvideo.com/mp4/adshort/20201226/cont-1713546-15547701_adpkg-ad_hd.mp4)自此url也就找出来了。
由于这里出现三个url,在这里三个url都有所用处,详见代码。
第三步:数据获取有两个,一个是视频的url获取,另外一个是下载视频的url获取。
第四步:保存数据在这里我们可以直接使用python文件操作的方式进行存储,直接命名带后缀MP4即可。
代码实现终于到了激动人心的时刻了。老实说,当晚爬出视频的时候确实挺开心的,本人还是python爬虫的初学者,实属不易。
第一步:导入包import requests import re from bs4 import BeautifulSoup from selenium import webdriver复制代码
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’的方法进行存储。运行快慢视网速快慢而定。