飞道的博客

超简单,Python爬取阴阳师式神视频

419人阅读  评论(0)

目标网址https://yys.163.com/media/video.html

结果展示

爬取阴阳师式神宣传CG

作为《阴阳师》的一名忠实粉丝,虽然式神抽到,御魂肝出,但是这并没有影响我对这款游戏的热爱,作为非酋的我,仍然保持着对这个游戏的喜爱,今天就来看一看这些式神的排面如何

目标:下载式神宣传视频

网页分析

将上方的目标网址复制到浏览器中打开,然后右键、检查进行审查元素(或按F12直接进入),从下图可以看出视频的地址,这就是我们的目标


我们不难发现,"阴阳师""式神""剧情""其它"这四部分的内容都是放在class="tab-cont"div标签中的,而每一个式神的信息都是放在一个class="item2"div 标签中的,我们需要从中得到视频名称视频地址,看到这里,我们就可以开始动手实践了。

教程开始

1 发送网页请求

使用第三方库requests来获取网页
使用BeautifulSoup解析网页

这里我们定义一个函数url_get()来实现请求网页的功能,使用BeautifulSoup来解析网页源代码,函数返回一个列表,其中包含了四个div标签,分别是"阴阳师""式神""剧情""其它"

def url_get():
    url = 'https://yys.163.com/media/video.html'
    response = requests.get(url).content.decode('utf-8')
    soup = BeautifulSoup(response, 'lxml')
    video = soup.find_all('div', {'class': 'tab-cont'})  # 阴阳师、式神、剧情、其它
    return video

2 获取目标数据

获得视频名称和视频地址

通过url_get()函数,返回了一个含有"式神"信息的列表,我们可以通过video[1]来获取所有的式神信息,如下所示:

这里使用正则表达式来获取视频名称视频地址,因为findall函数的要求,所以要对列表进行强制类型转换,转换为字符串str(),我们运行打印一下:

def info_get(video):
    title = re.findall('<div class="title">(.*?)</div>', str(video[1]))  # 视频名称
    href = re.findall('href="(.*?)"', str(video[1]))  # 视频链接
    for name, data in zip(title,href):
        print(name,data)


山海之战-鬼王觉醒 https://yys.v.netease.com/2019/1101/724b459d15d5ac8f3158758a8312378aqt.mp4
这些地址都可以直接进行访问

3 保存视频文件

同样保存视频文件封装成一个函数video_save(),它有两个参数namelink分别是视频的名称和链接,得到视频的链接后,再次使用requests请求来获取视频数据,

def video_save(name, link):
    time.sleep(0.3)
    movie = requests.get(link)
    if movie.status_code ==200:
        open(f'{name}.mp4', 'wb').write(movie.content)
        print(f'{name} 下载成功')
    else:
        print(f'{name} 下载失败  原因:{movie.status_code}')

4 程序执行入口

定义Python程序的执行入口,类似于主函数,程序将从这里开始执行
在主函数中创建用来存放视频的文件夹,./表示当前文件夹
先调用url_get()函数来获取网页,再调用info_get()函数获取视频信息,在info_get()中调用保存文件的函数video_save()来保存文件

def info_get(video):
    title = re.findall('<div class="title">(.*?)</div>', str(video[1]))  # 视频名称
    href = re.findall('href="(.*?)"', str(video[1]))  # 视频链接
    for name,link in zip(title,href):
        video_save(name, link)  # 调用保存文件的函数
if __name__ =='__main__':
    if not os.path.exists('./式神视频'):
        os.mkdir('./式神视频')
    os.chdir('./式神视频')
    video = url_get()
    info_get(video)

运行结果:

OK,本次教程到这里就结束了,感谢大家观看,如果本文章对你有帮助,欢迎点赞收藏加关注

结语

本次爬取视频的教程相较于上篇文章《超简单,Python爬取阴阳师原画壁纸》较为简洁,讲解也更简单,若是有哪里有疑惑,可以评论留言,或点击上方观看另一篇详细的教程。为了使代码更具可读性观赏性,我这次对代码进行了封装处理,使用def来定义函数,通过函数来实现特定的功能,使代码看起来更加美观易读

完整源码

# _*_ coding: utf-8 _*_
#开发团队:独狼科技
#开发人员:No moon No sun
#开发时间:2020/4/15 20:30
#文件名称:yys.py
#开发工具:PyCharm

import os
import re
import time
import requests
from bs4 import BeautifulSoup


def url_get():
    url = 'https://yys.163.com/media/video.html'
    response = requests.get(url).content.decode('utf-8')
    soup = BeautifulSoup(response, 'lxml')
    video = soup.find_all('div', {'class': 'tab-cont'})  # 阴阳师、式神、剧情、其它
    return video

def info_get(video):
    title = re.findall('<div class="title">(.*?)</div>', str(video[1]))  # 视频名称
    href = re.findall('href="(.*?)"', str(video[1]))  # 视频链接
    for name,link in zip(title,href):
        video_save(name, link)

def video_save(name, link):
    time.sleep(0.3)
    movie = requests.get(link)
    if movie.status_code ==200:
        open(f'{name}.mp4', 'wb').write(movie.content)
        print(f'{name} 下载成功')
    else:
        print(f'{name} 下载失败  原因:{movie.status_code}')


if __name__ =='__main__':
    if not os.path.exists('./式神视频'):
        os.mkdir('./式神视频')
    os.chdir('./式神视频')
    video = url_get()
    info_get(video)
    

转载:https://blog.csdn.net/weixin_43712156/article/details/105544076
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场