puppeteer 尝试

发布时间:2020-04-26 22:33:16 作者:RQSLT
来源:网络 阅读:967

【简介】


【准备工作】

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


【51cto.js】

/*!
 * walker@2019-07-13: 测试 puppeteer,得到网页截图和html
 */

`use strict`;

const puppeteer = require('puppeteer');
const fs = require("fs");

// 得到一个两数之间的随机整数,包括两个数在内
function GetRandInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 
}

// 下载一篇文章
async function DownOneArticle(page, rawid) {
    console.log('DownOneArticle %s ...', rawid);
    url = 'https://blog.51cto.com/walkerqt/' + rawid;
    console.log('goto %s ...', url);
    await page.goto(
        url,
        {
            // timeout: 90*1000,
            referer: 'https://blog.51cto.com/walkerqt'
        });
    let selector = 'div.artical-copyright';
    console.log('waitForSelector: %s ...', selector);
    await page.waitForSelector(
        selector,    // 指定等待 css
        {
            timeout: 10 * 1000
        }
    );
    await page.waitFor(GetRandInt(2, 5) * 1000);     // 随机睡眠几秒

    await page.screenshot({ path: rawid + '.png' });    // 保存截图
    let html = await page.content();
    fs.writeFileSync(rawid + ".html", html);            // 保存网页
}

(async () => {
    const browser = await puppeteer.launch({        // 启动浏览器
        headless: false,    // 是否启用无头模式
        args: [
            '--no-sandbox',
            // '--proxy-server=http://192.168.30.3:8080'   // 代理
        ]
    });
    const page = await browser.newPage();

    let url = 'https://blog.51cto.com/walkerqt';    // 首页
    console.log('goto %s ...', url);
    await page.goto(url);
    let xpath = '//*[@id="Tab"]/div[@class="artical-tit"]';
    console.log('waitForXPath: %s ...', xpath);
    await page.waitForXPath(        // 指定等待 xpath
        xpath,
        {
            timeout: 10 * 1000
        }
    );
    await page.waitFor(GetRandInt(2, 5) * 1000);     // 随机睡眠几秒

    let rawidArray = ['2419918', '2415142', '2413401', '2396430']
    for (let idx in rawidArray) {
        try {
            await DownOneArticle(page, rawidArray[idx]);
        } catch (error) {
            console.log('* stack:\n %s', error.stack);
        }
    }

    console.log("Good boy! Game over!");
    await browser.close();      // 关闭浏览器
})();


【运行】

node 51cto.js


【相关阅读】


*** walker ***


推荐阅读:
  1. 爬虫利器Puppeteer实战
  2. python版puppeteer怎么用

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

node.js 爬虫 chrome

上一篇:一些关于测试的思考

下一篇:iPhone OS的音频技术简介

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》