node實現(xiàn)爬蟲的幾種簡易方式
說到爬蟲大家可能會覺得很NB的東西,可以爬小電影,羞羞圖,沒錯就是這樣的。在node爬蟲方面,我也是個新人,這篇文章主要是給大家分享幾種實現(xiàn)node
爬蟲的方式。第一種方式,采用node,js中的 superagent+request + cheerio。cheerio是必須的,它相當(dāng)于node版的jQuery,用過jQuery的同學(xué)會非常容易上手。它
主要是用來獲取抓取到的頁面元素和其中的數(shù)據(jù)信息。superagent是node里一個非常方便的、輕量的、漸進(jìn)式的第三方客戶端請求代理模塊,用他來請求目標(biāo)頁面。
node中,http模塊也可作為客戶端使用(發(fā)送請求),第三方模塊request對其使用方法進(jìn)行了封裝,操作更方便。以下是三者的引入方法:
接下來我們開始請求要爬取的目標(biāo)頁面。申明目標(biāo)頁面比如新浪網(wǎng)首頁:
如新浪首頁部分代碼
通過superagent請求目標(biāo)網(wǎng)站,獲取到網(wǎng)站內(nèi)容,通過cheerio.load
方法引入要解析的html
cheerio中的有關(guān)DOM操作的方式
此處采用 .each(function(index,element){...})
方式遍歷需要的元素
返回結(jié)果如下:
若要將文字內(nèi)容存儲可采用以下方式:
引入fs模塊const fs= require("fs")
引入path模塊 const path=require("path")
Node.js 內(nèi)置的fs模塊就是文件系統(tǒng)模塊,負(fù)責(zé)讀寫文件。和所有其他JS模塊不同的是,fs模塊同時提供了異步和同步的方法。
在上述方法中調(diào)用存儲文字內(nèi)容mkdirs方法
//存放數(shù)據(jù) mkdirs('./content2',saveContent); (注: content2是新建文件名;saveContent是回調(diào)函數(shù))
文字內(nèi)容最終將存儲在content2中的content.txt文件中
若想存儲圖片可采用以下方式:
第二種方式: 使用Nightmare自動化測試工具。
這里介紹一下nightmare工具的用途:
Electron可以讓你使用純JavaScript調(diào)用Chrome豐富的原生的接口來創(chuàng)造桌面應(yīng)用。你可以把它看作一個專注于桌面應(yīng)用的Node.js的變體,而不是Web服務(wù)器。
其基于瀏覽器的應(yīng)用方式可以極方便的做各種響應(yīng)式的交互
Nightmare是一個基于Electron的框架,針對Web自動化測試和爬蟲,因為其具有跟PlantomJS一樣的自動化測試的功能可以在頁面上模擬用戶的行為觸發(fā)一些異步數(shù)據(jù)加載,
也可以跟Request庫一樣直接訪問URL來抓取數(shù)據(jù),并且可以設(shè)置頁面的延遲時間,所以無論是手動觸發(fā)腳本還是行為觸發(fā)腳本都是輕而易舉的。
const Nightmare=require("nightmare") //自動化測試包 ,處理動態(tài)頁面 const nightmare=Nightmare({show: true}) show:true時,運行node可以顯示內(nèi)置模擬瀏覽器
運行結(jié)束后,會在image2中存儲下載的圖片。
好了,文章就到這里了,有什么問題歡迎小伙伴指正。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
利用yarn實現(xiàn)一個webpack+react種子
其實以前就寫過如何使用React-router和Webpack快速構(gòu)建一個react程序。后來發(fā)現(xiàn)版本太老,于是乎最近又重新組織了下結(jié)構(gòu),使用最近發(fā)布的yarn作為包管理工具,介紹下基本安裝步驟,有需要的朋友們下面來一起看看吧。2016-10-10關(guān)于Mac下安裝nodejs、npm和cnpm的教程
本文通過圖文并茂的形式給大家介紹了Mac下安裝nodejs、npm和cnpm的教程,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2018-04-04Node.js原理阻塞和EventEmitter及其繼承的運用實戰(zhàn)
這篇文章主要介紹了Node.js原理阻塞和EventEmitter及其繼承的運用實戰(zhàn),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08Node.js中的require.resolve方法使用簡介
在Node.js中,可以使用require.resolve函數(shù)來查詢某個模塊文件的帶有完整絕對路徑的文件名,下面這篇文章主要介紹了Node.js中require.resolve方法使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-04-04Nodejs進(jìn)階之服務(wù)端字符編解碼和亂碼處理
這篇文章主要介紹了Nodejs進(jìn)階之服務(wù)端字符編解碼和亂碼處理,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09如何使用?Node.js?將?MongoDB?連接到您的應(yīng)用程序
NoSQL?數(shù)據(jù)庫對于處理大量分布式數(shù)據(jù)非常有用,我們可以在這個數(shù)據(jù)庫中存儲信息,對其進(jìn)行管理,這篇文章主要介紹了使用?Node.js?將?MongoDB?連接到您的應(yīng)用程序,需要的朋友可以參考下2022-09-09