婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Python爬取梨視頻的示例

Python爬取梨視頻的示例

熱門(mén)標(biāo)簽:400電話在線如何申請(qǐng) 地圖標(biāo)注可以遠(yuǎn)程操作嗎 天津塘沽區(qū)地圖標(biāo)注 滴滴地圖標(biāo)注公司 甘肅高頻外呼系統(tǒng) 江門(mén)智能電話機(jī)器人 智能電話機(jī)器人調(diào)研 如何申請(qǐng)400電話代理 杭州房產(chǎn)地圖標(biāo)注

爬取流程(美食區(qū)最熱標(biāo)簽下的三個(gè)視頻)

  1. 在首頁(yè)獲取視頻的編號(hào)和名字
  2. 拼接成正確的url
  3. 保存視頻

思路

1.從網(wǎng)頁(yè)中獲取視頻的url

發(fā)現(xiàn)視頻的url在id為“JprismPlayer”的div標(biāo)簽下的video標(biāo)簽src屬性中,xpath解析網(wǎng)頁(yè)

video_url = tree.xpath("http://div[@id='JprismPlayer']/video/@src")

但得到的返回值為空,也就是說(shuō)這個(gè)video標(biāo)簽在原網(wǎng)頁(yè)中并不存在,很可能是動(dòng)態(tài)加載出來(lái)的

2. 從動(dòng)態(tài)請(qǐng)求獲取視頻的url

果然在動(dòng)態(tài)請(qǐng)求中發(fā)現(xiàn)了包含視頻url的json數(shù)據(jù)

可是發(fā)起請(qǐng)求后拿到的json數(shù)據(jù)卻和抓包工具中看到的不一樣,試著在請(qǐng)求頭中加入Referer參數(shù),查看referer可以發(fā)現(xiàn),它最后video_后面跟的是首頁(yè)中視頻的編號(hào)

{
	"resultCode":"1",
	"resultMsg":"success", "reqId":"fd1c910d-f49a-431a-b9a4-9c193c3c1983",
	"systemTime": "1611666178518",
	"videoInfo":{"playSta":"1","video_image":"https://image1.pearvideo.com/cont/20210125/11107897-184717-1.png","videos":{"hdUrl":"","hdflvUrl":"","sdUrl":"","sdflvUrl":"","srcUrl":"https://video.pearvideo.com/mp4/third/20210125/1611666178518-11107897-181816-hd.mp4"}}
}

在headers中加入Referer后順利拿到j(luò)son數(shù)據(jù)

可向json數(shù)據(jù)中的視頻url發(fā)起請(qǐng)求拿到的卻是404頁(yè)面

3. 拼接正確的url

這里花了很長(zhǎng)時(shí)間去想哪里有問(wèn)題,把前面的步驟理了很多遍才發(fā)現(xiàn),其實(shí)動(dòng)態(tài)請(qǐng)求返回的json數(shù)據(jù)中的視頻url和主頁(yè)video標(biāo)簽中的視頻url根本不一致

首頁(yè)中加載出來(lái)的視頻鏈接是正確的,可以順利的拿到視頻,而json數(shù)據(jù)中的鏈接則會(huì)返回404。把他們進(jìn)行對(duì)比,可以看到他們前半部分是一樣的,但到了紅線框住的地方就不一樣了。
正確的url是 cont-視頻id-
而json數(shù)據(jù)中的url這個(gè)部分是 一串?dāng)?shù)字
那只要把這一串?dāng)?shù)字改成 cont-視頻id- 的形式就能獲得正確的視頻url了

代碼

# 爬取梨視頻

import requests
from lxml import etree
import os
from multiprocessing import Pool

# 梨視頻首頁(yè)url
url = "https://www.pearvideo.com/category_6"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
  }

# 獲取響應(yīng),并用etree解析
response = requests.get(url=url, headers=headers).text
tree = etree.HTML(response)

# 拿到視頻的名字和視頻號(hào)
video_id_list = tree.xpath("http://ul[@class='listvideo-list clearfix']/li[@class='categoryem ']//a[@class='vervideo-lilink actplay']/@href")
video_name_list = tree.xpath("http://ul[@class='listvideo-list clearfix']/li[@class='categoryem ']//a/div[@class='vervideo-title']/text()")
data_list = [{"name": video_name_list[i], "idNum": video_id_list[i][6:]} for i in range(len(video_name_list))]

# 創(chuàng)建一個(gè)存放視頻的文件夾
if not os.path.exists("./videos"):
  os.mkdir("./videos")

# 獲取視頻的函數(shù)
def down_video(data):
  name = data['name']
  idNum = data['idNum']

  # 獲取視頻需要的headers,注意這里的Referer要和視頻的id匹配
  headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36',
    'Referer': f'https://www.pearvideo.com/video_{idNum}'
  }
  # 獲取接近真正視頻url的url,這里的id也需要和視頻id匹配才行
  url = f'https://www.pearvideo.com/videoStatus.jsp?contId={idNum}'

  # 得到包含視頻地址json響應(yīng)數(shù)據(jù)
  response = requests.get(url=url, headers=headers).json()
  video_url = response["videoInfo"]["videos"]["srcUrl"]

  # 將視頻地址中的數(shù)字替換成 cont-視頻編號(hào) 拿到真正的視頻地址
  video_url = video_url.replace(video_url.split("/")[-1].split("-")[0], "cont-" + idNum)

  # 拿到視頻并保存
  video = requests.get(url=video_url, headers=headers).content
  with open(f"./videos/{name}.mp4", "wb") as f:
    print(f"正在下載視頻 {name} ...")
    f.write(video)
    print(f"視頻 {name} 下載完成!")

if __name__ == '__main__':
  # 創(chuàng)建進(jìn)程池并使用
  pool = Pool(3)
  pool.map(down_video, data_list)
  pool.close()
  pool.join()

總結(jié)

其實(shí)最難的地方是獲取正確的視頻url,中間過(guò)程比較繞。只要找到這個(gè)地址,再加上從首頁(yè)拿到的視頻id就可以順利拿到視頻了。
如果要爬取整個(gè)首頁(yè)視頻只需要重新設(shè)置xpath路徑就可以了。

以上就是Python爬取梨視頻的示例的詳細(xì)內(nèi)容,更多關(guān)于Python爬取梨視頻的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python爬取youtube視頻的示例代碼
  • Python爬取某平臺(tái)短視頻的方法
  • python爬取抖音視頻的實(shí)例分析
  • 使用python爬取抖音app視頻的實(shí)例代碼
  • 基于python爬取梨視頻實(shí)現(xiàn)過(guò)程解析
  • Python爬取騰訊視頻評(píng)論的思路詳解
  • Python爬取視頻(其實(shí)是一篇福利)過(guò)程解析
  • python爬取m3u8連接的視頻
  • Python爬取某拍短視頻

標(biāo)簽:臨汾 廊坊 長(zhǎng)春 德宏 河池 東莞 漢中 重慶

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python爬取梨視頻的示例》,本文關(guān)鍵詞  Python,爬取,梨,視頻,的,示例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python爬取梨視頻的示例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Python爬取梨視頻的示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 鹤岗市| 汉川市| 克什克腾旗| 三亚市| 庆安县| 勐海县| 汉源县| 皮山县| 三亚市| 沐川县| 瑞安市| 全椒县| 安宁市| 台南县| 荣成市| 龙陵县| 隆回县| 西乡县| 兰州市| 读书| 抚顺县| 荥经县| 康马县| 巩留县| 灵丘县| 江源县| 兴隆县| 香河县| 阿克| 陵水| 德江县| 云龙县| 柘荣县| 肇源县| 蓬溪县| 黑河市| 南漳县| 乌恰县| 英超| 溆浦县| 广元市|