成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

詳解如何使用Node.js開發一個簡單圖片爬取功能

如何使用Node進行爬取?下面本篇文章帶大家聊聊使用Node.js開發一個簡單圖片爬取功能,希望對大家有所幫助!

詳解如何使用Node.js開發一個簡單圖片爬取功能

爬蟲的主要目的是收集互聯網上公開的一些特定數據。利用這些數據我們可以能進行分析一些趨勢對比,或者訓練模型做深度學習等等。本期我們就將介紹一個專門用于網絡抓取的 node.js 包—— node-crawler ,并且我們將用它完成一個簡單的爬蟲案例來爬取網頁上圖片并下載到本地。

正文

node-crawler 是一個輕量級的 node.js 爬蟲工具,兼顧了高效與便利性,支持分布式爬蟲系統,支持硬編碼,支持http前級代理。而且,它完全是由 nodejs 寫成,天生支持非阻塞異步IO,為爬蟲的流水線作業機制提供了極大便利。同時支持對 DOM 的快速選擇(可以使用 jQuery 語法),對于抓取網頁的特定部分的任務可以說是殺手級功能,無需再手寫正則表達式,提高爬蟲開發效率。

安裝引入

我們先新建一個項目,在里面創建index.js作為入口文件。

然后進行爬蟲庫 node-crawler 的安裝。

# PNPM pnpm add crawler # NPM npm i -S crawler # Yarn  yarn add crawler

然后用過 require 引入進去。

// index.js const Crawler = require("crawler");

創建實例

// index.js let crawler = new Crawler({     timeout:10000,     jQuery:true, }) function getImages(uri) {     crawler.queue({         uri,         callback: (err, res, done) => {             if (err) throw err;         }     }) }

從現在我們將開始寫一個拿到html頁面的圖片的方法,crawler 實例化后,在其隊列中主要是為了寫入鏈接和回調方法。在每個請求處理完畢后將調這個回調函數。

這里還要說明一下, Crawler 使用了 request 庫,所以 Crawler 可供配置的參數列表是 request 庫的參數的超集,即 request 庫中所有的配置在 Crawler 中均適用。

元素捕獲

剛才或許你也看到了 jQuery 這個參數,你猜的沒錯,它可以使用 jQuery 的語法去捕獲 DOM 元素的。

// index.js let data = [] function getImages(uri) {     crawler.queue({         uri,         callback: (err, res, done) => {             if (err) throw err;             let $ = res.$;             try {                 let $imgs = $("img");                 Object.keys($imgs).forEach(index => {                     let img = $imgs[index];                     const { type, name, attribs = {} } = img;                     let src = attribs.src || "";                     if (type === "tag" && src && !data.includes(src)) {                         let fileSrc = src.startsWith('http') ? src : `https:${src}`                         let fileName = src.split("/")[src.split("/").length-1]                         downloadFile(fileSrc, fileName) // 下載圖片的方法                         data.push(src)                     }                 });             } catch (e) {                 console.error(e);                 done()             }             done();         }     }) }

可以看到剛才通過 $ 來完成對請求中 img 標簽的捕獲。然后我們下面的邏輯去處理補全圖片的鏈接和剝離出名字為了后面可以保存取名用。這里還定義了一個數組,它的目的是保存已經捕獲到的圖片地址,如果下次捕獲發現同一個圖片地址,那么就不再重復處理下載了。

以下是掘金首頁html用 $("img") 捕獲到的信息打印:

詳解如何使用Node.js開發一個簡單圖片爬取功能

下載圖片

下載之前我們還要安裝一個 nodejs 包—— axios ,是的你沒看錯,axios 不僅提供給前端,它也可以給后端去使用。但是因為下載圖片要把它處理成數據流,所以把 responseType 設置成 stream 。然后才可以用 pipe 方法保存數據流文件。

const { default: axios } = require("axios"); const fs = require('fs');  async function downloadFile(uri, name) {     let dir = "./imgs"     if (!fs.existsSync(dir)) {         await fs.mkdirSync(dir)     }     let filePath = `${dir}/${name}`     let res = await axios({         url: uri,         responseType: 'stream'     })     let ws = fs.createWriteStream(filePath)     res.data.pipe(ws)     res.data.on("close",()=>{         ws.close();     }) }

因為可能圖片很多,所以要統一放在一個文件夾下,就要判斷有沒有這個文件夾如果沒有就創建一個。然后通過 createWriteStream 方法來把獲取到的數據流以文件的形式保存到文件夾里面。

然后我們可以嘗試一下,比如我們捕獲用一下掘金首頁html下的圖片:

// index.js getImages("https://juejin.cn/")

執行后發現就可以發現已經捕獲到靜態html里面的所有圖片了。

node index.js

詳解如何使用Node.js開發一個簡單圖片爬取功能

結語

到了最后,你也可以看到,此代碼可能不適用于SPA(單頁面應用)。由于單頁應用程序中只有一個 HTML 文件,并且網頁上的所有內容都是動態呈現的,但是萬變不離其宗,不管怎樣,你可以直接處理其數據請求,來收集到想要的信息也未嘗不可。

還有一點要說的是,很多小伙伴處理下載圖片的請求用到了 request.js ,當然這樣可以的,甚至代碼量更少,但是,我想說的是這個庫在2020年的時候就已經被棄用了,最好換一個一直在更新維護的庫比較好。

詳解如何使用Node.js開發一個簡單圖片爬取功能

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
苍井空张开腿实干12次| www亚洲一级AV仑片| 24小时日本免费观看WWW| AV人摸人人人澡人人超碰妓女| www.性xxxxx| 公交车里抓着摇曳的手环诗情 | 狂猛欧美激情性XXXX大豆行情| 内射合集对白在线| 日产精品久久久久久久| 无码精品、日韩专区| 亚洲欧美国产国产一区二区| 中文字幕精品亚洲无线码一区 | 日韩激情在线小视频观看| 无码人妻丰满熟妇区免费| 亚洲人成人无码WWW影院| 中文曰本熟女久久| 成.人.大.片在线观看| 国产精品特级露脸AV毛片| 久久精品国产999久久久| 女人与公拘交酡ZOZO| 兽交ZOOSKOO| 亚洲乱码av一区二区三区| 696969C大但人文艺术作品| 当着老公的面被别人欺负该怎么办| 国产午睡沙发系列大全| 蜜桃视频一区二区三区在线观看| 三上悠亚SSNL-618无码播| 亚洲AV无码国产精品色午友情链| 在线观看亚洲AV每日更新| 第一次爱的人视频播放完整版| 狠狠噜天天噜日日噜AV| 欧美成人精品三级网站| 我和闺蜜在公交被八个人挤倒| 亚洲中文字幕人妻| 成人免费无遮挡在线播放 | 亚洲精品国产成人AV| ASS黑森林PIC| 国产又色又爽又黄的网站在线| 蜜桃成人无码区免费视频网站| 色欲aⅴ精品一区二区三区浪潮 | 无码成人AAAAA毛片| 伊人色综合一区二区三区影院视频| 成 人 黄 色 网 站 在线播| 精品无码AV一区二区三区| 日本成AⅤ人片日本伦| 亚洲精品无码MⅤ在线观看| 把腿张开老子臊烂你的漫画| 精品乱子伦一区二区三区| 日本老熟妇wwwbbb| 亚洲一区二区无码视频| 高清拍拍拍无挡国产精品| 久久亚洲中文字幕无码| 铜铜铜铜铜铜铜好-深色| 中国在线观看免费高清完整版| 国产精品久久毛片| 欧美精品乱码视频一二专区| 亚洲AV激情无码专区在线下载| XXXX性×XX老少配| 久久国产精品久久精品国产| 少妇人妻中文字幕| 131美女爱做视频国产福利| 国产午夜鲁丝片AV无码| 人妻少妇aB又紧又爽精品视频| 亚洲国产精品久久无码中文字蜜桃| 尝到了甜头两人每天都会想方设法 | 最新的国产成人精品2022| 国产精品久久久久蜜芽| 欧美精品九九99久久在免费线| 亚洲成A人片在线观看中文无码 | 越南少妇毛茸茸的大BBW| 国产精品久久久久久久久免费 | AV天堂精品久久久久2| 精产国品一二三产品区别在哪| 日韩欧美视频一区二区| 在线欧美精品一区二区三区| 国产无遮挡18禁无码网站免费| 日本黑人乱偷人妻中文字幕| 与上司出轨的人妻| 国自产拍亚洲免费视频| 色翁荡息又大又硬又粗视频| 97免费公开在线视频| 久久大香伊蕉在人线国产H| 无人区一码二码三码四码区别在哪| JAPANESEMATURE亲| 里番ACG★同人里番本子大全| 亚洲AV永久无码精品三区在线4| 房东天天吃我奶躁我| 欧美激情一区二区三区成人| 亚洲中文字幕AV无码专区| 国产一区二区三区精品视频 | 亚洲夜夜欢A∨一区二区三区| 国产乱理伦片在线观看夜| 人人妻人人爽日日人人 | 国产精华液一二三区别在哪| 人妻无码AⅤ不卡中文字幕| 中文在线っと好きだった最新版 | 国产精品R级最新在线观看| 人妻有码中文字幕| 91麻豆精品无码一区二区三区 | IPHONE欧美高清18| 男女啪啪激烈高潮喷出GIF免费| 亚洲午夜无码久久久久软件| 国内精品国产三级国产AV| 无码国产乱人伦偷精品视频| 东京热无码一区二区三区AV| 人人妻人人澡人人爽| 99久久国产露脸国语对白| 免费国内接码在线接收| 一二三四在线观看免费中文吗 | 人妻在厨房被侮辱高清版| 99精品视频在线观看免费| 免费看无码自慰一区二区| 永久免费AV无码网站在线| 久久久精品人妻人人澡| 亚洲人成色4444在线观看| 经典WC偷窥美女如厕MP4| 亚洲AV日韩综合一区久热 | 丁香花高清在线观看完整版| 强奷漂亮雪白丰满少妇| CHINESE中年熟妇FREE| 欧美激情一区二区三区成人| CHINA浴室洗澡VOYEUR| 欧美日韩一区二区成人午夜电影| 14萝自慰专用网站| 免费无码久久成人网站| 3CE九色眼影人间水蜜桃| 免费无码久久成人网站| 8090私人影院| 欧洲乱码伦视频免费| 暴躁老阿姨CSGO| 日韩人妻无码精品专区综合网| 成年女人A毛片免费视频| 日日噜噜夜夜狠狠久久丁香五月| 丁香婷婷激情俺也去俺来也| 少妇性饥渴无码A区免费| 国产成人一区二区精品视频| 无码少妇精品一区二区免费动态| 国产老妇伦国产熟女老妇视频| 小蜜被两老头吸奶头| 狠狠做深爱婷婷综合一区| 亚洲嫩模喷白浆在线观看| 久久精品中文闷骚内射| 国产精品99久久免费观看| 免费国产成人AⅤ观看| 18禁超污无遮挡无码免费游戏| 男女裸交免费无遮挡全过程| JAPANESE五十路熟女| 日本熟妇色熟妇在线视频播放| 大象一区一品精区搬运机器| 玩弄人妻热妇性色Av少妇| 国产无人区码卡功能齐全| 亚洲精品国产自在久久| 精品无人区卡卡二卡三乱码 | 四虎永久在线精品免费一区二区 | 麻豆国产96在线日韩麻豆| 99久久精品国产免费看| 日韩AV一区在线观看| 国产裸模视频免费区无码| 亚洲精品无码MV在线观看网站| 美女扒开尿口让男人桶进| 波多野结衣 片子| 无遮挡A级毛片免费看| 久久WWW免费人成一看片| 69综合精品国产二区无码| 日日碰狠狠添天天爽| 国产日产欧产精品精品软件| 亚洲熟妇AV日韩熟妇在线| 农村人乱弄一区二区| 丰满人妻一区二区三区视频53| 亚洲AV色先锋资源电影网站| 老熟妇一区二区三区啪啪| 餐桌下狂C亲女水欧阳凝| 午夜理论片福利在线观看| 久久久久无码国产精品不卡| YSL水蜜桃86| 无套内射AV二区| 六六电影院理论片| 宝贝你夹得太紧了我都要断了| 无码少妇xxxx| 麻豆国产一卡二卡三卡| 放荡的熟妇高清视频| 亚洲精品无码不卡| 人妻无码久久精品| 国内精品久久久久影院一蜜桃| 中文字幕三级人妻无码视频| 熟妇人妻VA精品中文字幕| 精品亚洲国产成人AV制服| JAZZJAZZJAZZ日本| 亚洲AV日韩AV永久无码色欲| 免费无码久久成人网站| 国产精品成人一区二区三区视频| 一本一道波多野结衣AV一区| 入禽太深高清视频韩国| 精品无码乱码AV| 草莓视频免费观看| 亚洲男人综合久久综合天堂| 日本三级欧美三级人妇视频| 精品久久久无码人妻中文字幕豆芽| XXXⅩ少妇少妇XXXX范冰冰| 亚洲AV无码一区二区三区鸳鸯影|