中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何爬取視頻

發布時間:2020-07-02 13:46:37 來源:億速云 閱讀:215 作者:清晨 欄目:編程語言

這篇文章將為大家詳細講解有關Python如何爬取視頻,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1.完成這個程序代碼需要的Python模塊

需要的Python模塊有:requests模塊、bs4模塊、threading模塊、sys模塊、urllib模塊、os模塊
下面簡要的介紹一下在這個程序中所使用的Python模塊的作用:
requests模塊:主要用于爬取網頁數據;
bs4模塊:主要用于解析爬取得到的數據信息;
threading模塊:主要用于下載所有的.ts文件,提高下載速度;
sys模塊:如果程序中間出現錯誤,終止整個程序代碼,使用sys.exit()方法;
urllib模塊:用于對用戶輸入的信息進行編碼,主要使用urllib.parse.urlencode()方法;
os模塊:用于得到一個文件夾下面所有的文件(或者文件夾)(在這里是得到文件),使用os.listdir()方法。

2. 爬取視頻的鏈接、簡介和名稱

首先,我們要來到這個網址下面:YM影視
在搜索欄上面輸入一部視頻的名稱:小編在這里輸入的是:斗羅大陸,點擊搜索按鈕,來到下面的畫面:
Python如何爬取視頻

接下倆我們需要得到的內容就是這些了,按電腦鍵盤的F12鍵,來到開發者工具,可以發現,這些內容和視頻的鏈接在這個標簽下面;

Python如何爬取視頻

實現代碼:兩個函數

def get_video_content():  # 得到匹配到的相關電影(或者電視劇)的名稱、鏈接、簡介的列表
    video=input('請輸入你想看的電影或者電視劇名稱:')
    keyword=parse.urlencode({'k':video})[2:]   # 對輸入的名稱進行編碼
    url='http://ymystv.com/seacher-%s.html'%(keyword)
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4039.400'}
    response=requests.get(url=url,headers=headers)
    soup=BeautifulSoup(response.text,'lxml')
    list_1=soup.select('li.activeclearfix')
    # list_1列表里面有的內容為 電影名稱(或者電視劇名稱)、鏈接、簡介等
    return list_1

def get_video_contents(list_1:list): # 進一步處理得到的內容(解析)
    list_url=[] # 視頻的鏈接
    listName=[] # 視頻名稱
    for i in range(len(list_1)):
        url=list_1[i].select('div.detail>h4>a')[0]['href']
        url='http://ymystv.com/'+url[url.rfind('./')+2:]
        list_url.append(url)
        name=list_1[i].select('div.detail>h4>a')[0].text
        listName.append(name)
        print('【{}】-{}'.format(i+1,name)) # 電影或者電視劇的名稱
        str1=list_1[i].select('div.detail>div.m-description')[0].text # 電影或者電視劇的簡介

        # 對簡介進行字符串處理,并按照每行最多50個字符輸出
        str1='簡介:'+str1[str1.find('簡  介 :')+6:].strip() # 去空格
        for j in range(len(str1)//50+1):
            print('{}'.format(str1[j*50:(j+1)*50]))
        # print('{}'.format(str1)) # 沒處理的輸出結果
        print('*'+'--'*36)

    id=int(input('請輸入你想看的序號:'))

    return list_url[id-1],listName[id-1]

運行結果:
Python如何爬取視頻

之后就是選擇我們想看的視頻了,我選擇的是 龍王傳說 也就是上面的序號6,雖然我沒有顯示出它,
點進去之后,可以發現,這里有許多集,現在需要的就是這些集數的鏈接了。
跟上面一樣,按電腦鍵盤F12鍵,來到開發者模式,可以發現,集數在這個標簽下面;
Python如何爬取視頻

3.得到這個視頻的下載鏈接的json文件

這樣我們就可以得到這些視頻的播放鏈接了,那怎樣下載呢?我們點擊NetWork下面的XHR刷新一下,可以發現,在這里有一個視頻接口(你懂的),只要將這個接口和剛才我們得到的一個視頻鏈接組合起來,在瀏覽器上打開,就是一個json數據,如下:
Python如何爬取視頻

我們只需將這個鏈接得到,并且得到里面使用的.ts文件的下載鏈接即可。

4.下載所有的.ts文件或者給出.mp4文件的下載鏈接

這里我運用的多線程下載,不過并不是所有的.ts文件都能播放的,但是合并成.MP4之后,是可以的;如果得到是一個.MP4文件的下載鏈接,我會將它直接輸出,因為一個.mp4文件比較大,運用Python爬蟲下載花費的時間比較多,所以這還不如直接運用瀏覽器下載。

5.合并所有.ts文件
import os

path=input('請輸入需要合并的絕對路徑:')
list_1=[path+'\{}.ts'.format(str(ij)) for ij in sorted([int(str_1[:str_1.find('.')]) for str_1 in os.listdir(path)])]
for str_2 in list_1:
    with open(file=str_2,mode='rb') as f:
        content=f.read()
    with open(file='./龍王傳說_1.mp4',mode='ab') as fp:
        fp.write(content)

合并保存的那個.MP4文件的名稱需要我們自己手動修改一下,當然讀者也可以改動一個代碼,不過,我覺得我的這個合并還不算好,播放的MP4還是有一些問題的,讀者如果有什么更好的合并方法,可以在下方留言,謝謝!

6.運行結果和最終代碼

運行結果:

運用Python爬蟲下載視頻

代碼:
代碼我已經上傳到github上了,讀者可以自行到上面查看,鏈接為:
video.py


關于Python如何爬取視頻就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇康县| 柳河县| 焦作市| 乐清市| 盐池县| 凉山| 龙门县| 石柱| 淮北市| 灯塔市| 枣强县| 保山市| 清丰县| 丹凤县| 黔南| 永泰县| 中超| 许昌县| 施甸县| 黑龙江省| 阿克苏市| 渑池县| 岐山县| 焉耆| 札达县| 扬中市| 平果县| 乌鲁木齐市| 房产| 行唐县| 高雄县| 科尔| 噶尔县| 工布江达县| 庆城县| 西昌市| 衡阳市| 建平县| 嘉峪关市| 加查县| 曲阜市|