摘要:基本使用返回的是一個集合需要重新遍歷為了顯示的圖片引入了原尺寸為的圖片順序不能變啟動打開監(jiān)聽事件跳轉(zhuǎn)頁面關(guān)閉順序改變監(jiān)聽事件將無法監(jiān)聽多個的使用方法爬取數(shù)組上的所有圖片,并返回其真實寬高此方法大致參考了上的答案
基本使用
"use strict"; const puppeteer = require("puppeteer"); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); let imgArr = []; page.on("domcontentloaded", async () => { imgArr = await page.$$eval("img", img => { const arr = []; // 返回的是一個集合需要重新遍歷 for (let i = 0; i < img.length; i++) { const obj = { width: img[i].width, naturalWidth: img[i].naturalWidth, height: img[i].height, naturalHeight: img[i].naturalHeight, isStandard: !((img[i].width * 10 <= img[i].naturalWidth || img[i].height * 10 <= img[i].naturalHeight)), url: img[i].src, level: 3, imageUrl: img[i].src, describeUrl: "", summary: `為了顯示${img[i].width}x${img[i].height}的圖片引入了原尺寸為${img[i].naturalWidth}x${img[i].naturalHeight}的圖片`, }; if (obj.width && obj.height) { arr.push(obj); } } return arr; }); }); await page.goto("https://www.npmjs.com/package/puppeteer", { waitUntil: "networkidle0" }); await browser.close(); console.log("imgArr: ", imgArr); })();
順序不能變 :
await puppeteer.launch() 啟動
await browser.newPage() 打開page
page.on 監(jiān)聽事件
await page.goto 跳轉(zhuǎn)頁面
await browser.close() 關(guān)閉
順序改變,page.on() 監(jiān)聽事件將無法監(jiān)聽
多個URL的使用方法爬取數(shù)組url上的所有圖片,并返回其真實寬高.
/* eslint-disable no-undef */ "use strict"; const puppeteer = require("puppeteer"); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); let arr = []; const html = [ "https://www.npmjs.com/package/puppeteer", "https://www.iconfont.cn/search/index?searchType=icon&q=test" ]; for (let i = 0; i < html.length; i++) { await page.goto(html[i], { waitUntil: "domcontentloaded" }); await page.waitForSelector("img", { timeout: 3000 }); // eslint-disable-next-line no-loop-func const doms = await page.evaluate(() => { const arr = [ ...document.querySelectorAll("img") ]; return arr.map(v => { return { naturalWidth: v.naturalWidth, naturalHeight: v.naturalHeight, width: v.width, height: v.height, }; }); }); arr = [ ...arr, ...doms ]; } await browser.close(); })();
此方法大致參考了overflow上的答案:
Crawling multiple URL in a loop using puppeteer
Looping through a set of urls in Puppeteer
Puppeteer - Proper way to loop through multiple URLs
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/103798.html
摘要:上面只爬取了京東首頁的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁中的所有標(biāo)簽對應(yīng)的跳轉(zhuǎn)網(wǎng)頁中的所有的文字內(nèi)容,最后放到一個數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁資源,開箱即用的配置 將爬取到的...
摘要:上面只爬取了京東首頁的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁中的所有標(biāo)簽對應(yīng)的跳轉(zhuǎn)網(wǎng)頁中的所有的文字內(nèi)容,最后放到一個數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁資源,開箱即用的配置 將爬取到的...
摘要:上面只爬取了京東首頁的圖片內(nèi)容,假設(shè)我的需求進(jìn)一步擴(kuò)大,需要爬取京東首頁中的所有標(biāo)簽對應(yīng)的跳轉(zhuǎn)網(wǎng)頁中的所有的文字內(nèi)容,最后放到一個數(shù)組中。 showImg(https://segmentfault.com/img/bVbtVeV?w=3840&h=2160); 本文適合無論是否有爬蟲以及Node.js基礎(chǔ)的朋友觀看~ 需求: 使用Node.js爬取網(wǎng)頁資源,開箱即用的配置 將爬取到的...
摘要:爬蟲爬蟲又稱網(wǎng)絡(luò)機(jī)器人。每天或許你都會使用搜索引擎,爬蟲便是搜索引擎重要的組成部分,爬取內(nèi)容做索引。那我萌就來探討一下網(wǎng)絡(luò)爬蟲吧。對后關(guān)于不僅僅可以用來做爬蟲,因為可以編程,無頭瀏覽器,可以用來自動化測試等等。 @(爬蟲)[puppeteer|] 爬蟲又稱網(wǎng)絡(luò)機(jī)器人。每天或許你都會使用搜索引擎,爬蟲便是搜索引擎重要的組成部分,爬取內(nèi)容做索引。現(xiàn)如今大數(shù)據(jù),數(shù)據(jù)分析很火,那數(shù)據(jù)哪里來呢,...
閱讀 1408·2023-04-26 01:58
閱讀 2282·2021-11-04 16:04
閱讀 1753·2021-08-31 09:42
閱讀 1765·2021-07-25 21:37
閱讀 1066·2019-08-30 15:54
閱讀 2074·2019-08-30 15:53
閱讀 3047·2019-08-29 13:28
閱讀 2687·2019-08-29 10:56