簡略nodejs爬取網(wǎng)站內(nèi)容技術(shù)
對于互聯(lián)網(wǎng)上的一些公共信息,可以通過一定的手段進(jìn)行數(shù)據(jù)爬取,最常用的使用python技術(shù),網(wǎng)上有各種的爬蟲,可以搜索到。
信息爬取的時候,有的可以從網(wǎng)站中獲取請求數(shù)據(jù)的url,以http形式的進(jìn)行數(shù)據(jù)獲取,需要登錄驗證的,用token或者用戶名和密碼進(jìn)行登錄;有的是html頁面,需要從其中的DOM中,獲取需要的內(nèi)容。
各種的開發(fā)語言,一般都有爬取網(wǎng)站的方式,相對來說,python現(xiàn)有的類庫比較多,能夠直接進(jìn)行調(diào)用。
使用nodejs爬取網(wǎng)站內(nèi)容,也是借助現(xiàn)有的各種類庫:
?1、const?axios?=?require('axios');?
?Axios是一個基于promise的HTTP庫,可以用在瀏覽器和 node.js 中,根據(jù)網(wǎng)址,返回請求的數(shù)據(jù)內(nèi)容;
2、const?iconv?=?require('iconv-lite');
iconv-lite用于在node當(dāng)中處理在各種操作系統(tǒng)出現(xiàn)的各種奇特編碼;假如使用axios獲取的內(nèi)容,編碼不是UTF-8,需要使用iconv-lite進(jìn)行轉(zhuǎn)碼。
3、const?cheerio?=?require('cheerio');
cheerio主要是為了用在服務(wù)器端需要對DOM進(jìn)行操作的地方。
在返回內(nèi)容是html的時候,需要使用此類庫進(jìn)行html中節(jié)點解析。
流程:
根據(jù)規(guī)則,請求http內(nèi)容,處理返回內(nèi)容,解析出來的數(shù)據(jù),進(jìn)行存儲。