溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

發(fā)布時(shí)間:2020-09-12 08:21:58 來源:腳本之家 閱讀:214 作者:coolwan丶 欄目:web開發(fā)

說到爬蟲大家可能會(huì)覺得很NB的東西,可以爬小電影,羞羞圖,沒錯(cuò)就是這樣的。在node爬蟲方面,我也是個(gè)新人,這篇文章主要是給大家分享幾種實(shí)現(xiàn)node

爬蟲的方式。第一種方式,采用node,js中的 superagent+request + cheerio。cheerio是必須的,它相當(dāng)于node版的jQuery,用過jQuery的同學(xué)會(huì)非常容易上手。它

主要是用來獲取抓取到的頁面元素和其中的數(shù)據(jù)信息。superagent是node里一個(gè)非常方便的、輕量的、漸進(jìn)式的第三方客戶端請(qǐng)求代理模塊,用他來請(qǐng)求目標(biāo)頁面。

node中,http模塊也可作為客戶端使用(發(fā)送請(qǐng)求),第三方模塊request對(duì)其使用方法進(jìn)行了封裝,操作更方便。以下是三者的引入方法:

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

接下來我們開始請(qǐng)求要爬取的目標(biāo)頁面。申明目標(biāo)頁面比如新浪網(wǎng)首頁:

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

如新浪首頁部分代碼

  node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

通過superagent請(qǐng)求目標(biāo)網(wǎng)站,獲取到網(wǎng)站內(nèi)容,通過cheerio.load方法引入要解析的html
cheerio中的有關(guān)DOM操作的方式

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

此處采用 .each(function(index,element){...})方式遍歷需要的元素

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

返回結(jié)果如下:

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

若要將文字內(nèi)容存儲(chǔ)可采用以下方式:

引入fs模塊const fs= require("fs")

引入path模塊 const path=require("path")

Node.js 內(nèi)置的fs模塊就是文件系統(tǒng)模塊,負(fù)責(zé)讀寫文件。和所有其他JS模塊不同的是,fs模塊同時(shí)提供了異步和同步的方法。

在上述方法中調(diào)用存儲(chǔ)文字內(nèi)容mkdirs方法

//存放數(shù)據(jù)
mkdirs('./content2',saveContent); (注: content2是新建文件名;saveContent是回調(diào)函數(shù))

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

文字內(nèi)容最終將存儲(chǔ)在content2中的content.txt文件中

若想存儲(chǔ)圖片可采用以下方式:

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

第二種方式: 使用Nightmare自動(dòng)化測(cè)試工具。

這里介紹一下nightmare工具的用途:

Electron可以讓你使用純JavaScript調(diào)用Chrome豐富的原生的接口來創(chuàng)造桌面應(yīng)用。你可以把它看作一個(gè)專注于桌面應(yīng)用的Node.js的變體,而不是Web服務(wù)器。

其基于瀏覽器的應(yīng)用方式可以極方便的做各種響應(yīng)式的交互

Nightmare是一個(gè)基于Electron的框架,針對(duì)Web自動(dòng)化測(cè)試和爬蟲,因?yàn)槠渚哂懈鶳lantomJS一樣的自動(dòng)化測(cè)試的功能可以在頁面上模擬用戶的行為觸發(fā)一些異步數(shù)據(jù)加載,

也可以跟Request庫一樣直接訪問URL來抓取數(shù)據(jù),并且可以設(shè)置頁面的延遲時(shí)間,所以無論是手動(dòng)觸發(fā)腳本還是行為觸發(fā)腳本都是輕而易舉的。

const Nightmare=require("nightmare") //自動(dòng)化測(cè)試包 ,處理動(dòng)態(tài)頁面
const nightmare=Nightmare({show: true}) show:true時(shí),運(yùn)行node可以顯示內(nèi)置模擬瀏覽器

node實(shí)現(xiàn)爬蟲的幾種簡(jiǎn)易方式

運(yùn)行結(jié)束后,會(huì)在image2中存儲(chǔ)下載的圖片。

好了,文章就到這里了,有什么問題歡迎小伙伴指正。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI