Python Web Scraping Tutorial: Downloading YY Live Videos via API

This tutorial demonstrates how to use Python's requests library to fetch video data from the YY Live API, parse the JSON response, extract video URLs, and programmatically download and save the videos, including code snippets for single and batch downloads.

Python Programming Learning Circle
Python Programming Learning Circle
Python Programming Learning Circle
Python Web Scraping Tutorial: Downloading YY Live Videos via API

This article introduces a practical Python web‑scraping example that targets the YY Live platform. It explains why the YY Live API is chosen, shows the API endpoint https://api-tinyvideo-web.yy.com/home/tinyvideosv2, and describes how to send HTTP requests using the requests library.

Simulating the request

url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
data = response.json()

The JSON response contains a list of video records. Each record holds a resurl field with the actual video link and a yyNum identifier that can be used to name the file.

Parsing the data

for d in data_list:
    video_title = str(d['yyNum']) + '.mp4'
    video_url = d['resurl']
    video_content = requests.get(url=video_url, headers=headers).content
    with open('video\\' + video_title, mode='wb') as f:
        f.write(video_content)
        print('保存完成:', video_title)

The script saves each video to a local video directory and prints a confirmation message.

Looped downloading

Because the API returns different data on each call, the script can be wrapped in a loop to fetch multiple pages and download more videos.

url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
}
for _ in range(page+1):
    response = requests.get(url=url, headers=headers)
    data = response.json()
    data_list = data['data']['data']
    print(data_list)

Complete script

import requests

def fire(page):
    url = 'https://api-tinyvideo-web.yy.com/home/tinyvideosv2'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
    }
    for _ in range(page+1):
        response = requests.get(url=url, headers=headers)
        data = response.json()
        data_list = data['data']['data']
        print(data_list)
        for d in data_list:
            video_title = str(d['yyNum']) + '.mp4'
            video_url = d['resurl']
            video_content = requests.get(url=video_url, headers=headers).content
            with open('video\\' + video_title, mode='wb') as f:
                f.write(video_content)
                print('保存完成:', video_title)

if __name__ == '__main__':
    fire(10)

The article concludes by noting that this approach leverages the public API for quick results, and future posts will explore page‑scraping techniques to collect videos from different hosts and categories.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

PythonAutomationAPIWeb ScrapingVideo Download
Python Programming Learning Circle
Written by

Python Programming Learning Circle

A global community of Chinese Python developers offering technical articles, columns, original video tutorials, and problem sets. Topics include web full‑stack development, web scraping, data analysis, natural language processing, image processing, machine learning, automated testing, DevOps automation, and big data.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.