循环爬取图片_Python爬取YY小姐姐自拍短视频

前言

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

基本开发环境

  • Python 3.6

  • Pycharm

相关模块的使用

import requests
import re

目标网页分析

百度搜索YY,搜索结果第一个就是目标网址了,点击进去选择分类中的小视频,如下图所示:

471e34b98f970a1b72690f1b1cb15b73.png

e1af176779c5c961c214fabd18631605.png

2f76b46f47367e73c5c49aa174dfa938.png

分析视频地址

按照常规操作就是:

1、打开开发者工具,选择 network

2、点击刷新网页、查看返回数据

d83dce7703816a9d5d4e53dd363028e7.png

但是这个网站和平常的静态网页有所不同,按照正常的网站它是有翻页的,而这个网站是下滑网页,才会出现新的视频数据。

所以按照步骤应该是:

1、打开开发者工具,选择清空所有数据内容

2、下滑网页内容

f9a97d3cb15c06206d8cd55fd1e3f4c6.png

如上图所示,同样会给你返回很多数据内容,如果需要一个一个去找的话,是非常的麻烦且浪费时间,可以选择复制一个视频的名字或者发布视频用户的名字,在开发者工具当中进行搜索。

60268fd972296a737531c0ce1c145cb7.png

a5bc0bf6456f6031d447725f1f8be0e8.png

如上图所示,每个这样的链接所对应的是10个短视频的地址,通过复制粘贴查看每个url地址所对应的使用,像后缀带有 .jpg 这些肯定就是图片了,其中的 resurl 就是我们所需要的视频地址了。

获取视频url地址以及视频名字

import requests
# 1、确定爬取的url路径,headers参数
url = 'https://api-tinyvideo-web.yy.com/home/tinyvideos?'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
}
param = {
    'data': '{"uid":0,"page":1,"pageSize":10}',
}
# 2、发送请求 -- requests 模拟浏览器发送请求,获取响应数据
response = requests.get(url=url, headers=headers, params=param)
data = response.json()
print(data)

# 3、解析数据
# 提取字段
data_list = data['data']['data']
# 循环遍历
for data1 in data_list:
    resdesc = data1['resdesc'] + '.mp4'  # 视频的题目
    resurl = data1['resurl']  # 视频的url地址

注意点:

我传的param的参数和链接有一些不一样,我只传入了data,因为如果是所有的参数都传入的话,那么返回的结果是字符串形式,这样还会多一些步骤

1、正则匹配只提取里面的json格式数据;

2、字符串转json。

14a589affbd11a5108ae4de7856d3ef0.png

保存视频

请求视频地址,通过wb保存二进制的方式保存视频

video_data = requests.get(resurl, headers=headers).content

# 4、保存数据
with open('video\\' + resdesc, mode='wb') as f:
    print('正在下载:', resdesc)
    f.write(video_data)

如何实现多页爬取

我们单单只是爬取10个短视频是肯定不够的,所以我们要分析这个视频地址的规律。

872d325960a2f65bd58e4131a13c29a6.png

网页多下滑几次,可以多看几个可以发现,data中的page就是对应的页码。所以可以通过循环 给page传参,即可实现多页爬取的效果。

相关视频教程

单页爬取的完整代码

import requests
# 1、确定爬取的url路径,headers参数
url = 'https://api-tinyvideo-web.yy.com/home/tinyvideos?'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
}

param = {
    'data': '{"uid":0,"page":1,"pageSize":10}',
}

# 2、发送请求 -- requests 模拟浏览器发送请求,获取响应数据
response = requests.get(url=url, headers=headers, params=param)
data = response.json()
print(data)

# 3、解析数据

# 提取字段
data_list = data['data']['data']

# 循环遍历
for data1 in data_list:
    resdesc = data1['resdesc'] + '.mp4'  # 视频的题目
    resurl = data1['resurl']  # 视频的url地址

    video_data = requests.get(resurl, headers=headers).content
    # 4、保存数据
    with open('video\\' + resdesc, mode='wb') as f:
        print('正在下载:', resdesc)
        f.write(video_data)

本篇文章留堂作业:

1、多页爬取的怎么实现;

2、当爬取视频标题出现特殊字符怎么处理?文件命名出现特殊字符是无法保存的。

7846bcbaa910aff4dcb002c639a8e27d.png

a08ca05c40234237f4fac0e833337c0c.png 记得点赞、分享哟 ~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值