爬虫百战(四)——爬取yy短视频

今天跟大家分享的是爬取YY网站短视频

本次爬取所有代码在本文结尾贴出

爬取YY短视频

准备工作

首先,我们本次爬取的网站URL为https://www.yy.com/sv

点击链接进入网站后,我们要开始分析网页啦😊

在这里插入图片描述

接下来就是“经验”环节啦(也就是把刷新页面后Network下出现的数据包一个一个点击去看看),在我“不懈努力”之下,我发现了视频存储的位置:
在这里插入图片描述
我们可以发现该数据包是以json文件格式返回的

注:Preview 可以看到数据包的具体内容

除了找到视频在哪个位置以外,我们还要为写代码做一下一些准备工作:

  • 还是刚才那个文件,点击headers
  • 在这里插入图片描述
    找到视频的URL,该URL就是我们爬取的真正的网址,不过我们还要做下处理,毕竟这个URL没用的
    参数过多,我们仅仅需要以下这段URL即可打开:
https://api-tinyvideo-web.yy.com/home/tinyvideos?data=%7B%22uid%22%3A0%2C%22page%22%3A1%2C%22pageSize%22%3A10%7D&_=1588860867580
  • 获取用户代理和请求参数
    在这里插入图片描述
  • 我们爬取的是多页的视频,因此,我们要分析一下网站是如何加载下一页的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

通过观察我们发现,该网站加载数据实现翻页操作仅仅是改变data里page的值即可

OK,以上就是我们的准备工作,接下来就是写代码环节

撸代码

写爬虫代码一般四步走:

1、分析目标网页 确定爬取的URL路径 设置headers、params参数
2、发送请求 获得响应数据
3、解析数据
4、保存数据

😂跟着四步走的思想,代码写起来轻轻松松:

import requests
import csv
import json

# import pprint

# 1分析目标网页 确定爬取的URL路径
page = 0
while True:
    page += 1
    print('=====================正在抓取第()页的数据=============='.format(page))
    url = 'https://api-tinyvideo-web.yy.com/home/tinyvideos'
    params = {
        'data':'{"uid":0,"page":%s,"pageSize":10}'%str(page)
    }
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'

    }

    # 2发送请求 获得响应数据
    response = requests.get(url, headers=headers, params=params)

    #获取响应数据中的json数据
    data = response.json()
    # print(data)

    # pprint.pprint(data)

    # 3解析数据
    # 提取字段
    data_list = data['data']['data']
    # print(data_list)

    ## 遍历列表
    for data in data_list:
        try:
            resdesc = data['resdesc'] +'.mp4'  #视频文件名

            resurl = data['resurl']   #视频的URL
        except Exception as e:
            break
        video_data = requests.get(url=resurl,headers=headers).content  #提取二进制数据



    # 4保存数据

    # 在项目下的文件夹新建一个文件夹保存视频

    with open('video\\' + resdesc,mode='wb') as f:
        print('正在抓取视频',resdesc)
        f.write(video_data)

我设置的是死循环,因此需要人为的停止,当然循环条件你可以设置一个合适的数满足你自己的要求即可

OK 以上就是本次全部内容 感谢阅读!!!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值