1. 程式人生 > 實用技巧 >爬蟲——爬取梨視訊

爬蟲——爬取梨視訊

import requests     # 匯入爬蟲模組
import re           # 匯入正則模組
import os           # 匯入檔案操作模組

a = 1           # 主程式判斷結束的錨
start = 0       # 記錄爬取位置

# 主程式迴圈
while a:

    v = []      # 存放視訊地址

    # 拼接地址,爬取網頁內容
    url = 'https://www.pearvideo.com/category_loading.jsp?reqType=5&categoryId=1&start=' + str(start)
    res = requests.get(url = url)

    # 使用正則獲取視訊名稱
    vnz = '<div class="vervideo-title">(.*?)</div>'
    vn = re.findall(vnz,res.text)

    # 使用正則獲取HTML中的視訊超連結
    vz = '<a href="(.*?)" class="vervideo-lilink actplay">'
    vu = re.findall(vz,res.text)

    for  i in vu:
        # 迴圈取出視訊超連結,拼接並爬取網頁內容
        vurl = 'https://www.pearvideo.com/' + i
        res1 = requests.get(url = vurl)

        # 找到網頁中的視訊地址,使用正則取出並存入視訊列表(v)中
        vz2 = 'srcUrl="(.*?)"'
        vurl1 = re.findall(vz2,res1.text)
        v.append(vurl1[0])

    for i in range(len(v)):
        # 迴圈取出視訊名稱並拼接成檔案路徑
        add = os.path.join('D:\梨視訊', vn[i]) + '.mp4'
        with open(add,'wb') as f:
            # 迴圈取出視訊地址然後獲取視訊資料,並用資料流存入檔案中
            for line in requests.get(v[i]).iter_content():
                f.write(line)

    # 判斷視訊檔案中的視訊地址數量是否為12個
    # 是:繼續迴圈    否:結束迴圈
    if len(v) == 12:
        start = int(start) + 12
    else:
        print("結束")
        a = None