前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Puppeteer工具简介及其在网页爬取和自动化中的应用

Puppeteer工具简介及其在网页爬取和自动化中的应用

原创
作者头像
jackcode
修改2023-04-06 14:26:48
修改2023-04-06 14:26:48
74400
代码可运行
举报
文章被收录于专栏:爬虫资料爬虫资料
运行总次数:0
代码可运行

Puppeteer是一个流行的Node.js库,在开发者中广泛使用的用于网页爬取和自动化任务的工具。它提供两种操作模式,即headfull和headless。在headfull模式下,Puppeteer控制的Chrome或Chromium浏览器是有界面的,也就是可以看到浏览器运行的情况。在此模式下,可以使用浏览器的开发者工具进行调试。这种模式非常适合在本地进行开发和调试。而在headless模式下,它在后台运行,没有用户界面,这种模式非常适合在服务器上运行,因为没有界面,所以可以节省很多资源。该工具还提供缓存资源的选项,这可以帮助减少页面加载时间并提高性能。此外,Puppeteer允许开发人员在页面中执行JavaScript代码,并使用代理更改请求的IP地址,这对于匿名请求或从不同区域访问内容很有用。

代码示例:

代码语言:javascript
代码运行次数:0
运行
复制
const puppeteer = require('puppeteer');

(async () => {
  // 爬虫加强版代理IP和端口号
  const proxyUrl = 'http://www.16yun.cn:8080'; 
  // 代理用户名和密码
  const proxyAuth = '16YUN:16IP'; 

  const browser = await puppeteer.launch({
    headless: true,
    args: [
      // 通过代理 IP 和端口号访问网站
      `--proxy-server=${proxyUrl}`, 
      // 使用代理用户名和密码进行认证
      `--proxy-auth=${proxyAuth}` 
    ]
  });

  const page = await browser.newPage();

  await page.goto('https://www.xiaohongshu.com/video');

  const videoLinks = await page.evaluate(async () => {
    const links = [];
    const videoItems = document.querySelectorAll('a.video-item');

    await Promise.allSettled(Array.from(videoItems).map(async (link) => {
      const title = link.querySelector('p.title').textContent.trim();
      const description = link.querySelector('p.desc').textContent.trim();

      const response = await fetch(link.href);
      const text = await response.text();
      const videoUrl = text.match(/"videoUrl":"(.*?)"/)[1];

      links.push({
        url: link.href,
        title,
        description,
        videoUrl
      });
    }));

    return links;
  });

  console.log(videoLinks);

  await browser.close();
})();

以上的代码是使用 Puppeteer 框架的 headless 模式,通过爬虫加强版代理 IP 访问小红书的视频页面,获取视频的简介信息。代码中使用了异步方式处理页面元素,以提高爬虫的效率,同时还增加了对代理用户名和密码的认证。最终,代码将获取到的视频简介信息输出到控制台中。这个代码示例可以用于学习 Puppeteer 爬虫的基础知识,并且可以用于获取小红书的视频简介等类似数据。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档