使用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可以上天,說不定以後真的可以做任何事情。請收藏這麽短的高質量教程。
或者轉發給妳的朋友,謝謝。