使用puppeteer下载百度图片

1,091 阅读2分钟

前言:

这几天由于工作时的需要大量的图片,于是就去百度搜索相关的图片,一张一张的图片下载,发现1分钟才下个几十张图片,实在太慢,而且是机械性的操作,于是找想到使用puppeteer来帮忙我做这些事情。


安装:

npm install puppeteer --save --registry=https://registry.npm.taobao.org

会下载Chromium,但是这个需要翻墙才能继续下载

开始使用:

1.找到目标网址:https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E9%87%8E%E7%94%9F%E7%8C%B4%E5%AD%90&step_word=&hs=0&pn=0&spn=0&di=110&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=2619896592%2C2037015882&os=1636180671%2C3674573131&simid=4260907139%2C665364550&adpicid=0&lpn=0&ln=1057&fr=&fmq=1567152992286_R&fm=detail&ic=undefined&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fs1.sinaimg.cn%2Fmw690%2F001mfmIfgy6N9QLVYdi90%26690&fromurl=ippr_z2C%24qAzdH3FAzdH3Fks52_z%26e3Bftgw_z%26e3Bv54_z%26e3BvgAzdH3FfAzdH3Fks52_9wnn9m10a8adenty_z%26e3Bip4s&gsm=0&rpstart=0&rpnum=0&islist=&querylist=&force=undefined

2.分析这里的下载步骤,到首页后,先点击下载按钮,再点击下一张图片,但是由于点击下载后会跳转到新的tabs页面,所以需要返回上一个tab标签页,

实现代码如下:

async function downLoadImage(page, browser) {  await page.click('.btn-download',{delay:1000}); // 点击下载    await page.bringToFront(); // 返回上一个标签页  await page.click('.img-next'); // 点击下一张图片  current++; // 已经下载的图片   if (needNumbers > current) { // 如果下载图片大于需要下载的图片 则继续下载                                       downLoadImage(page,browser);  }else{ // 否则终止下载     copy('C:\\Users\\*****\\Downloads','E:\\work\\算法训练平台相关\\猴子');    browser.close(); // 关闭进程   }}


  1. 由于这里下载的图片是直接保存谷歌的默认下载地址里的,所以需要把下载的图片剪切到我们需要的目录里:

 function copy(origin,dest) {  fs.readdir(origin,(err,files) =>{ // 获取下载目录里的所有文件 然后对其执行复制处理   files.forEach(item =>{      if(/^.*(jpg|png|jpeg)$/.test(item)){        const originPath = path.join(origin,item);        const destPath = path.join(dest,item);        fs.writeFileSync(destPath,fs.readFileSync(originPath));        fs.unlinkSync(originPath);      }    })  })}

每复制一个文件就删除一个文件,所以在下载的目录里记得把有用的图片先提前保存了。


源码链接:github.com/kaykie/pupp…

原文链接: 使用puppeteer下载百度图片