當前位置:吉日网官网 - 油畫收藏 - 如何使用Node.js抓取任意網頁資源並輸出PDF文件到本地?

如何使用Node.js抓取任意網頁資源並輸出PDF文件到本地?

需求:

使用Node.js抓取web資源,並對其進行開箱即用的配置。

以PDF格式輸出抓取的網頁內容。

如果妳是技術人員,可以看我下壹篇文章,否則請直接去我的github倉庫直接看文檔。

倉庫地址:所附文件和源代碼。

本需求中使用的技術:Node.js和puppeteer。

木偶師官網地址:木偶師地址

Node.js官網地址:鏈接描述

Puppeteer是Google官方制作的通過DevTools協議控制無頭Chrome的節點庫。可以通過Puppeteer提供的api直接控制Chrome模擬大部分用戶操作進行UI測試或者作為爬蟲訪問頁面收集數據。

環境和安裝

Puppeteer本身依賴6.4以上的Node,但是對於異步且超級好用的async/await,建議使用7.6以上的Node。另外,無頭Chrome本身對服務器所依賴的庫的版本要求較高,centos server相對穩定。在v6中很難使用無頭Chrome,在升級依賴版本時可能會出現各種服務器問題(包括但不限於無法使用ssh)。最好使用更高版本的服務器。(建議使用Node.js的最新版本)

試試小刀,爬上JD.COM的資源。

const木偶師= require('木偶師');//引入依賴關系

(async()= & gt;{//使用異步函數的完美異步

const browser = await puppeter . launch();//打開新的瀏覽器

const page = await browser . new page();//打開新網頁

Await page.goto('/download/),Node.js中文官網下載相應的操作系統包。

第二步,下載安裝Node.js後,啟動windows命令行工具(啟動windows下的系統搜索功能,輸入cmd,回車,就出來了)。

第三步是檢查環境變量是否已經被自動配置。在命令行工具中輸入node -v。如果字段v10。***出現,說明Node.js已經成功安裝。

第四步如果在第三步進入node -v後發現對應的字段沒有出現,請重啟電腦。

第五步打開項目文件夾,打開命令行工具(在windows系統下,直接在文件的url地址欄輸入cmd即可打開),輸入npm i cnpm nodemon -g g。

第六步是下載木偶師爬蟲包。第五步完成後,使用cnpm I puppeter-save命令下載它。

第七步第六步下載完成後,打開這個項目的url.js,替換掉妳需要抓取的網頁地址(默認為/)。

第八步:在命令行輸入nodemon index.js抓取相應內容,自動輸出到當前文件夾下的index.js文件。

溫馨提示:本項目的設計思路是壹頁壹個PDF文件,所以請在每壹頁抓取完畢後復制index.pdf,然後繼續更改url地址,抓取生成新的PDF文件。當然也可以壹次抓取多個頁面,通過循環編譯生成多個PDF文件。

與圖片加載遲緩的網頁相對應,如JD.COM主頁,抓取的部分內容是處於加載狀態的內容。對於有壹些反爬蟲機制的網頁,爬蟲也會有問題,但是大部分網站都是可以的。

const木偶師= require('木偶師');

const url = require('。/URL’);

(async()= & gt;{

const browser = await puppeter . launch({ headless:true })

const page = await browser.newPage()

//選擇要打開的網頁。

await page.goto(url,{ waitUntil: 'networkidle0' })

//選擇要輸出的PDF文件的路徑,將抓取的內容輸出到PDF。它必須是現有的PDF,可以是空內容。如果不是空的內容PDF,它將覆蓋內容。

設pdfFilePath = '。/index . pdf ';

//根據您的配置選項,我們選擇A4紙規格輸出PDF,方便打印。

await page.pdf({

路徑:pdfFilePath,

格式:“A4”,

規模:1,

printBackground:真的,

風景:假的,

displayHeaderFooter: false

});

等待browser.close()

})()

文件解構設計

這個時代數據非常珍貴。根據網頁的設計邏輯,如果選擇了特定的href地址,可以先直接獲取相應的資源,也可以再次使用page.goto方法進入,然後調用page.evaluate()處理邏輯,或者輸出相應的PDF文件。當然也可以壹次輸出多個PDF文件~

這裏就不做過多介紹了。畢竟Node.js可以上天,說不定以後真的可以做任何事情。請收藏這麽短的高質量教程。

或者轉發給妳的朋友,謝謝。

  • 上一篇:侄子更像叔叔?
  • 下一篇:談談孩子們叛逆的朋友圈
  • copyright 2024吉日网官网