Nodejs實現(xiàn)簡單的網(wǎng)頁圖片獲取

????利用node實現(xiàn)爬蟲這里用到了三個主要模塊,其中https,fs是內(nèi)置模塊可以直接引入,cheerio是第三方模塊需要npm install cheerio --save 安裝后使用。

這里我介紹一個三個模塊的相應(yīng)用法

? ? 首先是https模塊,顧名思義是用于獲取https協(xié)議網(wǎng)址的相關(guān)內(nèi)容所需要用到的模塊,其中包含get,post兩中方法,在獲取數(shù)據(jù)時也有所不同,我使用的是get方法,https.get(url,(res)=>{})接收兩個參數(shù),第一個是要爬取的地址,第二個是回調(diào)函數(shù)用于獲取返回的數(shù)據(jù),res有兩個監(jiān)聽,res.on('data')是監(jiān)聽每一段數(shù)據(jù)流數(shù)據(jù)傳輸,接收參數(shù)就是每次傳輸?shù)?html)數(shù)據(jù),這個數(shù)據(jù)我們保存在一個字符串中,并將所有的數(shù)據(jù)進行拼接。之后會用到res.on('end')方法,表示數(shù)據(jù)傳輸已經(jīng)完成,這個時候就需要用到移入的第三方模塊cherrio。

? ? cherrio模塊中有一個.load方法,用來解析我們之前保存下的html字符串,解析后的html數(shù)據(jù)用類似于jQuery的方法來獲取相關(guān)的dom元素的信息,這邊我們要獲取的是img標(biāo)簽中的src的值,所以先遍歷出所有的img標(biāo)簽,獲取到所有的圖片地址。將獲取到的圖片地址信息再用https進行一次獲取到真正的圖片數(shù)據(jù)。這個時候就需要fs出場了

? ? fs文件模塊有很多種的用法,非常便于我們對nodejs文件進行一個快捷操作。這里我們只需要用到文件寫入功能。通過以上操作獲取到圖片的真實二進制數(shù)據(jù),fs.writeFile(保存路徑,二進制數(shù)據(jù),‘binary’,callback),將所有的請求到的圖片下載保存至本地。至此一個簡單的圖片獲取js就基本實現(xiàn),目前只寫了文件夾的處理,后續(xù)更新多文件的圖片下載。逆戰(zhàn)班加油


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容