亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node爬蟲實踐

發布時間:2020-07-20 05:28:50 來源:網絡 閱讀:480 作者:wx5d1d7cf454d00 欄目:web開發

爬蟲的原理很好理解,就是在服務端請求另一個服務器的資源,前端有跨域問題,而服務端沒有,這是天然優勢。掌握node的前端可以為所欲為了。Node爬蟲實踐

1 首先,根據請求資源的協議選擇合適的模塊,比如csdn是https協議,就用https的方法取請求,之前沒有注意到這個問題。

var?https?=?require('https');

2 用get方法請求需要抓去內容的網頁地址,試過用request方法,沒有反應。

?https.get('https://www.xxx.net',function(res){
????????......
?})

3 用cheerio模塊查找dom元素,抓取需要的內容。cheerio是服務端的dom操作工具,以jquery為內核。

var?cheerio?=?require('cheerio');
?????res.on('data',?(chunk)?=>?{
????????const?$?=?cheerio.load(chunk);
????????let?content=$('.company_list');
?????})

4 把圖片的絕對地址改成本地路徑,前端頁面無法直接訪問跨域受保護圖片。

let?imgsrc=[];
content.find('img').each((index,e)=>{
????
????var?originsrc=e.attribs.src;
????e.attribs.src?='/images/'+e.attribs.src.split('?')[0].split('/').pop();
????imgsrc.push(originsrc);

})

5 最后一步,也是最重要的一步:把圖片保存在本地文件夾。試過fs.readFile 和fs.writeFile,保存下來的圖片受損打不開;試過直接get請求,返回的圖片都是0字節。正確的方法是用request方法,至于為什么?我也不清楚啊。可能是binary二進制的優勢,畢竟再怎么偽裝,所有數據本質還是二進制吧。


var?request?=?require('request');
imgsrc.forEach(item=>{

????var?filename?=?item.split('?')[0].split('/').pop();

????request({?url:?item,?encoding:?null?},?(err,?response,?body)?=>?{?
????????fs.writeFileSync('./public/images/'+filename,?body,?{?encoding:?'binary'?});
????})

})

到此為止,爬蟲的功能就結束了。Node爬蟲實踐


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

射阳县| 旬阳县| 栖霞市| 乐山市| 满城县| 兴安盟| 四子王旗| 白银市| 凌海市| 班玛县| 仙桃市| 吉安县| 儋州市| 安泽县| 祁门县| 寻乌县| 大方县| 彰化市| 黔南| 论坛| 阜新市| 沧州市| 凌源市| 邢台县| 乌鲁木齐市| 房产| 敦煌市| 自贡市| 三台县| 莒南县| 奈曼旗| 东乡| 南昌市| 康保县| 呼图壁县| 社旗县| 申扎县| 颍上县| 邓州市| 四子王旗| 天长市|