搜尋
首頁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
如何在 Steam 中更改游戏下载位置如何在 Steam 中更改游戏下载位置May 10, 2023 pm 11:22 PM

Steam是PC游戏玩家中最受欢迎的应用程序之一,因为您可以在Steam商店中找到任何主要游戏。它通过其用户界面简化了用户喜爱的游戏的下载、安装和管理。每当Steam用户想要下载游戏时,Steam都会使用应用程序的默认安装目录来下载和安装游戏。此位置默认为C:\ProgramFiles(x86)\Steam。问题来了,因为大多数用户在C盘上没有足够的空间,特别是对于占用大量存储空间的游戏,例如50–100GB。为了克服这个问题,Steam允许用户使用应用程序更改游戏的下载和

mac版下载是什么意思mac版下载是什么意思Mar 06, 2023 am 09:52 AM

mac版下载的意思是当软件在选择安装时,选择MAC版下载;Windows版和MAC版是两个不同的操作系统,所以大多数软件在选择安装的同时需要选择Windows版还是MAC版。

千兆网下载速度是多少千兆网下载速度是多少Mar 08, 2023 am 09:57 AM

千兆网下载速度理论上是125MB/S,也就是每秒下载速度最高125M;在实际使用中,受到网卡、路由器、网线、硬盘等网络设备的影响,实际下载速度大概有110-117MB/s,也就是880-936Mbps左右。

微软官方下载的win10需要花钱吗微软官方下载的win10需要花钱吗Jul 01, 2023 pm 06:17 PM

微软官方下载的win10需要花钱吗?现在win10依旧是使用最多最稳定的系统,所以还是有很多人想要使用,那么现在win10系统下载需要钱吗,其实下载一直都是不需要花钱的,但是激活使用需要。很多小伙伴不知道怎么回事,小编下面整理了win10系统下载需要钱吗介绍,如果你感兴趣的话,跟着小编一起往下看看吧!win10系统下载需要钱吗介绍答:win10系统下载不要钱,但是要激活使用是要花钱的,不激活部分功能用不了,还会有烦人的激活提示。1、其实win10下载一直都是不要钱的。2、但是正版win10是需要

Win10无法下载Steam的解决方案Win10无法下载Steam的解决方案Jul 10, 2023 pm 04:45 PM

Steam是一个内置丰富的游戏资源的热门游戏平台,但一些用户发现他们无法在更新Win10系统后下载Steam。这是怎么回事?应该是因为我们的ipv4服务器地址没有设置好。让我们来看看解决方案。Win10不能下载Steam的解决方案:您可以尝试在Win10下安装兼容模式,更新后需要关闭兼容模式,否则网页将无法加载。点击安装程序的属性,以兼容模式运行此程序(旧版Win7没有此功能,设置功能比其他计算机更多,通常是主机计算机,我是Win10专业版)重新启动以释放内存,计算机不操作2分钟,然后操作安装程

win10下载不了steam怎么办win10下载不了steam怎么办Jul 07, 2023 pm 01:37 PM

Steam是十分受欢迎的一个平台游戏,拥有众多优质游戏,可是有些win10用户体现自己下载不了steam,这是怎么回事呢?极有可能是用户的ipv4服务器地址没有设置好。要想解决这个问题的话,你可以试着在兼容模式下安装Steam,随后手动修改一下DNS服务器,将其改成114.114.114.114,以后应当就能下载了。win10下载不了steam怎么办:WIn10下能够试着兼容模式下安装,更新后必须关掉兼容模式,不然网页将无法加载。点击程序安装的属性,以兼容模式运作运行这个程序。重启以增加内存,电

win10下载官网地址win10下载官网地址Jul 11, 2023 am 10:41 AM

  最近win11系统出来了测试版,很多小伙伴也用起了win11,但win10系统现在依然是最多人使用的,不知道去哪里下载win10系统的小伙伴们,下面小编就给大家分享win10下载官网地址。  1.win7之家官网:http://www.windows7en.com/。里面想要任何系统都有,小伙伴可以去这里找。  2.小白一键重装系统官网:http://www.xiaobaixitong.com/。小白也一样是各个版本都有,还能一键安装win7原版系统。  以上就是win10下载官网地址,希望

win7镜像文件下载安装详细步骤win7镜像文件下载安装详细步骤Jul 13, 2023 pm 06:13 PM

win7系统是目前最流行的操作系统,大多数电脑都是运行win7系统,win7系统界面华丽,稳定性强,是受用户青睐的最大因素,接下来就和大家分享一下电脑安装windows7镜像系统的方法吧。1、首先我们在电脑上下载装机吧一键重装系统,打开选择win7系统安装,重装之前请自行备份好c盘和桌面的数据。2、选择需要安装的镜像文件之后,耐心等待注意电脑不要断电断网。3、等待下载部署完成后,点击立即重启。4、接着来到这个windows启动管理器,我们选择第二个选项Zhuangjiba进入pe系统。5、进入p

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具