ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

无头浏览器-puppeteer

2021-08-02 07:32:24  阅读:218  来源: 互联网

标签:console log await puppeteer 无头 浏览器 page const


Puppeteer  

puppeteer是一个node库,提供了一组用来操纵Chrome的API(默认headless也就是无UI的chrome,也可以配置为有UI)

有点类似于PhantomJS,但Puppeteer是Chrome官方团队进行维护的,前景更好。

 

 

使用Puppeteer,相当于同时具有Linux和Chrome的能力,应用场景会非常多。就爬虫领域来说,远比一般的爬虫工具功能更丰富,性能分析、自动化测试也不在话下。

 

简单用法

// 依赖
const puppeteer = require('puppeteer')
const request = require('request')
const { createWriteStream } = require('fs')

async function run(val) {
  const browser = await puppeteer.launch({
    headless: false
  })
  console.log('打开浏览器')
  const page = await browser.newPage()
  console.log('新建页面')
  await page.goto('http://image.baidu.com/')
  console.log('进入一个网站')
  await page.waitForSelector('html')
  console.log('等待元素加载')
  await page.type('#kw', val)
  console.log('输入成功')
  await page.click('#homeSearchForm > span.s_search')
  console.log('点击搜索')
  await page.waitForSelector('.imgbox > a')
  console.log('等待加载')
  let urls = await page.$$eval('.imgbox > a', as => as.map(a => a.href))
  console.log('1')
  for (var i = 0, len = urls.length; i < len; i++) {
    await page.goto(urls[i])
    console.log('进入图片页面')
    await downloadImg(page, i)
  }
  await browser.close()
}
async function downloadImg(page, index) {
  await page.waitForSelector('.currentImg')
  console.log('页面加载完毕')
  let src = await page.evaluate(function () {
    let img = document.querySelector('.currentImg')
    return img.src
  })
  console.log('图片链接:'+src)
  await download(src,`./images/${index}` + src.substr(-4, 4))
  console.log('下载完成')
}
function download (path, name) {
  return new Promise ((resolve, reject) => {
    let ws = new createWriteStream(name)
    ws.on('finish', function () {
      ws.end()
      resolve()
    })
    ws.on('error',reject)
    request({
      url: path,
      headers: {
        'Referer': 'no-referrer-when-downgrade',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
      }
    }).pipe(ws)
  })
}
run('壁纸')

  

标签:console,log,await,puppeteer,无头,浏览器,page,const
来源: https://www.cnblogs.com/breakdown/p/15088397.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有