91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

景德镇市| 奇台县| 南开区| 炎陵县| 唐海县| 寻甸| 海原县| 宣汉县| 昌吉市| 南开区| 邵阳县| 庆元县| 康定县| 大余县| 汶川县| 洮南市| 尉犁县| 明溪县| 沾益县| 花莲市| 宁城县| 建昌县| 潜山县| 南召县| 丹阳市| 安乡县| 黄浦区| 泗阳县| 凤山市| 深圳市| 苍山县| 彭水| 达孜县| 柘城县| 山阴县| 景东| 新野县| 徐水县| 东源县| 凤阳县| 全椒县|