目錄
簡介
專案啟動
技術點
影片檔下載方法
首頁 web前端 js教程 Node如何實作批量爬取頭條影片並保存(程式碼實作)

Node如何實作批量爬取頭條影片並保存(程式碼實作)

Sep 19, 2018 pm 05:02 PM
node.js 下載 網頁爬蟲 影片

這篇文章帶給大家的內容是關於Node如何實現批量爬取頭條影片並保存(程式碼實現),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

簡介

一般批次爬取影片或圖片的套路是,使用爬蟲取得檔案連結集合,然後透過 writeFile 等方法逐一儲存檔案。然而,頭條的視頻,在需要爬取的 html 文件(服務端渲染輸出)中,無法捕捉視頻鏈接。影片連結是頁面在客戶端渲染時,透過某些 js 檔案內的演算法或解密方法,根據影片的已知 key 或 hash 值,動態計算並新增到 video 標籤的。這也是網站的一種反爬措施。

我們在瀏覽這些頁面時,透過審核元素,可以看到計算後的檔案位址。然而在批量下載時,逐個手動的獲取視頻鏈接顯然不可取。開心的是,puppeteer 提供了模擬存取 Chrome 的功能,讓我們可以爬取經過瀏覽器渲染出來的最終頁面。

專案啟動

指令
npm i
npm start
登入後複製

Notice: 安裝 puppeteer 的過程稍慢,耐心等待。

設定檔
// 配置相关
module.exports =  {
  originPath: 'https://www.ixigua.com', // 页面请求地址
  savePath: 'D:/videoZZ' // 存放路径
}
登入後複製

技術點

puppeteer

官方API

puppeteer 提供一個進階 API 來控制 Chrome 或 Chromium。

puppeteer 主要功能:

  • 利用網頁產生PDF、圖片

  • 爬取SPA應用,並產生預先渲染內容(即「SSR」服務端渲染)

  • 可以從網站抓取內容

  • 自動化表單提交、UI測試、鍵盤輸入等

使用到的API:

  • puppeteer.launch() 啟動瀏覽器實例

  • browser .newPage() 建立一個新頁面

  • page.goto() 進入指定網頁

  • page.screenshot() 截圖

  • page.waitFor() 頁面等待,可以是時間、某個元素、某個函數

  • page.$eval() 取得一個指定元素,相當於document.querySelector

  • page.$$eval() 取得某類別元素,相當於document.querySelectorAll

  • #page.$( '#id .className') 取得文件中的某個元素,操作類似jQuery

#程式碼範例

const puppeteer = require('puppeteer');
 
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});
 
  await browser.close();
})();
登入後複製

影片檔下載方法

  • #下載影片主方法

const downloadVideo = async video => {
  // 判断视频文件是否已经下载
  if (!fs.existsSync(`${config.savePath}/${video.title}.mp4`)) {
    await getVideoData(video.src, 'binary').then(fileData => {
      console.log('下载视频中:', video.title)
      savefileToPath(video.title, fileData).then(res =>
        console.log(`${res}: ${video.title}`)
      )
    })
  } else {
    console.log(`视频文件已存在:${video.title}`)
  }
}
登入後複製
  • 取得影片資料

getVideoData (url, encoding) {
  return new Promise((resolve, reject) => {
    let req = http.get(url, function (res) {
      let result = ''
      encoding && res.setEncoding(encoding)
      res.on('data', function (d) {
        result += d
      })
      res.on('end', function () {
        resolve(result)
      })
      res.on('error', function (e) {
        reject(e)
      })
    })
    req.end()
  })
}
登入後複製
  • 將影片資料儲存到本地

savefileToPath (fileName, fileData) {
  let fileFullName = `${config.savePath}/${fileName}.mp4`
  return new Promise((resolve, reject) => {
    fs.writeFile(fileFullName, fileData, 'binary', function (err) {
      if (err) {
        console.log('savefileToPath error:', err)
      }
      resolve('已下载')
    })
  })
}
登入後複製
目標網站:西瓜影片 
專案功能:下載頭條號碼【維辰財經】下的最新20個影片 
#專案位址:Github 位址

以上是Node如何實作批量爬取頭條影片並保存(程式碼實作)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1662
14
CakePHP 教程
1419
52
Laravel 教程
1313
25
PHP教程
1262
29
C# 教程
1235
24
wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦 Mar 19, 2024 pm 02:00 PM

當你在自己電腦上登過別人steam帳號之後,剛好這個別人的帳號也有wallpaper軟體,切換回自己帳號之後steam就會自動下載別人帳號訂閱的桌布,使用者可以透過關閉steam雲端同步解決。 wallpaperengine登入別的號碼後下載別人的桌布怎麼辦1、登陸你自己的steam帳號,在設定裡面找到雲端同步,關閉steam雲端同步。 2.登陸你之前登陸的別人的steam帳號,打開wallpaper創意工坊,找到訂閱內容,然後取消全部訂閱。 (以後防止找不到壁紙,可以先收藏再取消訂閱)3、切換回自己的stea

115://開頭的連結怎麼下載?下載方法介紹 115://開頭的連結怎麼下載?下載方法介紹 Mar 14, 2024 am 11:58 AM

  最近有很多用戶都在問小編,115://開頭的連結怎麼下載?想要下載115://開頭的連結需要藉助115瀏覽器,大家下載好115瀏覽器後,再來看看下面小編整理好的下載教學。  115://開頭的鏈接下載方法介紹  1、登入115.com,下載115瀏覽器並安裝。  2、在1​​15瀏覽器網址列輸入:chrome://extensions/,進入擴充中心,搜尋Tampermonkey,安裝對應插件。  3、在115瀏覽器網址列輸入:  油猴腳本:https://greasyfork.org/en/

抖音發布他人影片侵權嗎?它怎麼剪輯影片不算侵權? 抖音發布他人影片侵權嗎?它怎麼剪輯影片不算侵權? Mar 21, 2024 pm 05:57 PM

隨著短影片平台的興起,抖音成為了大家日常生活中不可或缺的一部分。在抖音上,我們可以看到來自世界各地的有趣影片。有些人喜歡發布他人的視頻,這就引發了一個問題:抖音發布他人視頻侵權嗎?本文將圍繞這個問題展開討論,告訴大家怎樣剪輯影片不算侵權,以及如何避免侵權問題。一、抖音發布他人影片侵權嗎?根據我國《著作權法》的規定,未經著作權人許可,擅自使用其作品,屬於侵權行為。因此,在抖音上發布他人視頻,如果未經原作者或著作權人許可,就屬於侵權行為。二、怎樣剪輯影片不算侵權? 1.使用公共領域或授權的內容:公共

超級人類(superpeople)遊戲下載安裝方法介紹 超級人類(superpeople)遊戲下載安裝方法介紹 Mar 30, 2024 pm 04:01 PM

超級人類(superpeople)遊戲可以透過steam客戶端下載遊戲,這款遊戲的大小在28G左右,下載到安裝通常需要一個半小時​​,以下為大家帶來具體的下載安裝教學!新的申請全球封閉測試方法1)在Steam商店(steam客戶端下載)搜尋“SUPERPEOPLE”2)點擊“SUPERPEOPLE”商店頁面下方的“請求SUPERPEOPLE封閉測試訪問權限”3)點擊請求訪問權限按鈕後,將在Steam庫中可確認「SUPERPEOPLECBT」遊戲4)在「SUPERPEOPLECBT」中點選安裝按鈕並下

foob​​ar2000怎麼下載? -foobar2000怎麼使用 foob​​ar2000怎麼下載? -foobar2000怎麼使用 Mar 18, 2024 am 10:58 AM

foob​​ar2000是一款能隨時收聽音樂資源的軟體,各種音樂無損音質帶給你,增強版本的音樂播放器,讓你得到更全更舒適的音樂體驗,它的設計理念是將電腦端的高級音頻播放器移植到手機上,提供更便捷高效的音樂播放體驗,介面設計簡潔明了易於使用它採用了極簡的設計風格,沒有過多的裝飾和繁瑣的操作能夠快速上手,同時還支持多種皮膚和主題,根據自己的喜好進行個性化設置,打造專屬的音樂播放器支援多種音訊格式的播放,它還支援音訊增益功能根據自己的聽力情況調整音量大小,避免過大的音量對聽力造成損害。接下來就讓小編為大

夸克網盤怎麼下載到本地?夸克網盤下載檔案保存回本地的方法 夸克網盤怎麼下載到本地?夸克網盤下載檔案保存回本地的方法 Mar 13, 2024 pm 08:31 PM

  不少的用戶們在使用夸克網盤的時候需要將文件下載下來,可我們想讓他保存在本地,那麼這要怎麼設定?以下就讓本站來為使用者來仔細的介紹一下夸克網盤下載檔案保存回本地的方法吧。  夸克網盤下載檔案儲存回本地的方法  1、開啟夸克,登入帳號進去,點選清單圖示。  2、點選圖示之後,選擇網盤。  3、進去夸克網盤之後,點選我的檔案。  4、進去我的文件之後,選擇要下載的文件,點擊三點圖示。  5、勾選要下載的文件,點選下載就行了。

如何發布小紅書影片作品?發影片要注意什麼? 如何發布小紅書影片作品?發影片要注意什麼? Mar 23, 2024 pm 08:50 PM

隨著短影片平台的興起,小紅書成為了許多人分享生活、表達自我、獲取流量的平台。在這個平台上,發布影片作品是一種非常受歡迎的互動方式。那麼,如何發布小紅書影片作品呢?一、如何發布小紅書影片作品?首先,確保準備好一段適合分享的影片內容。你可以利用手機或其他攝影設備拍攝,需要注意畫質和聲音的清晰度。 2.剪輯影片:為了讓作品更具吸引力,可以剪輯影片。可使用專業的影片剪輯軟體,如抖音、快手等,加入濾鏡、音樂、字幕等元素。 3.選擇封面:封面是吸引用戶點擊的關鍵,選擇一張清晰、有趣的圖片作為封面,讓

抖音發布影片如何賺收益?新手小白怎麼在抖音上賺錢啊? 抖音發布影片如何賺收益?新手小白怎麼在抖音上賺錢啊? Mar 21, 2024 pm 08:17 PM

抖音,這個全民短視頻平台,不僅讓我們在閒暇時間享受到各種有趣、新奇的短視頻,同時也給了我們一個展示自我、實現價值的舞台。那麼,如何在抖音發布影片中賺取收益呢?本文將詳細解答這個問題,幫助你在抖音上賺取更多的收益。一、抖音發布影片如何賺收益?發布影片在抖音上獲得一定的播放量後,可以有機會參與廣告分成計畫。這項收益方式是抖音用戶最熟悉的之一,也是許多創作者主要的收入來源。抖音根據帳號權重、影片內容以及觀眾回饋等多種因素來決定是否提供廣告分成的機會。抖音平台允許觀眾透過發送禮物來支持自己喜歡的創作者,

See all articles