风哥教程

培训 . 交流 . 分享
Make progress together!

Puppeteer爬虫的实现

[复制链接]
内容发布:suger| 发布时间:2020-9-7 15:35:40
数据采集的时候,动态网页的内容是 Ajax 加载或者加密的。为了快速启动项目获取数据,减少研发投入,一般选择使用无头浏览器selenium + phantomjs的方案, Google 推出了Chrome浏览器的无头模式和 puppeteer ,相对以前使用更加方便,运行也稳定。同时为了解决网站对IP请求频率的限制,需要配合爬虫代理IP,这样可以快速稳定的采集数据。
    使用Puppeteer的过程中要注意以下几点:
1. 使用代理
Chrome 浏览器可以在启动的时候通过参数设置代理,或者通过 chrome.proxy API 在每次请求的时候设置代理服务器。
2. JS分析屏蔽
Chrome 浏览器很多的附加功能在核心渲染上是无效的,可以分析JS数据,屏蔽一些无效的JS降低请求并发数和带宽,同时能减轻服务器的资源占用。
3. 反爬网站的处理
部分网站会进行Headless 模式的分析,拒绝相关的请求,或者返回错误数据。这时候可以分析目标网站的JS,将关键的JS预先注入,就能避开网站的控制。
下面提供使用爬虫代理IP的demo,大家可以参考使用:
const puppeteer = require('puppeteer');
// 代理服务器(产品官网 www.16yun.cn)
const proxyServer = 'http://t.16yun.cn:31111';
const username = 'username';
const password = 'password';
(async() => {
    const browser = await puppeteer.launch({
        args: [  '--proxy-server='+proxyServer+'','--no-sandbox', '--disable-setuid-sandbox' ]});
    const page = await browser.newPage();
    await page.authenticate({ username, password });
    await page.goto('https://www.baidu.com');
    const cookies = await page.cookies();
    await console.log(cookies);
    await page.setViewport({width: 320, height: 480});
    await page.screenshot({path: '/screenshots/full.png', fullPage: true});
    await browser.close();
})();


上一篇:使用Python HTTP库 Requests 进行数据采集
下一篇:我打算大苏打
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门文章教程

  • MySQL5权威指南(第3版)PDF电子版下载
  • 风哥Oracle数据库巡检工具V1.0(附2.6网页
  • PostgreSQL数据库中文培训手册
  • Navicat for MySQL最新版下载地址及注册码
  • Oracle OCP认证考试IZ0-053题库共712题数据
  • Oracle Database 12c 数据库100个新特性与
快速回复 返回顶部 返回列表