吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1649|回复: 7
收起左侧

[其他原创] 【JavaScript】分享一个使用puppeteer木偶进行浏览器自动化抓取图片

[复制链接]
vombel 发表于 2022-12-6 05:14
本帖最后由 vombel 于 2022-12-6 05:15 编辑

前情提要:
puppeteer是一个谷歌官方的操作chrome的nodejs API库,可以在无浏览器界面的情况下的进行拿到DOM结构、执行js代码、模拟操作,

在nodejs环境下运行
代码中的下载方式是从浏览器页面文件结构中直接拿的,能用浏览器看到就能下。
要用网络请求图片链接方式下载,请使用其他下载模块

const puppeteer = require("puppeteer"); 

const downloadFile = require("./utils/download");
async function load() {
    const browser = await puppeteer.launch({
        headless: false,
    });

    const page = await browser.newPage();
    await page.setUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36");

   //这段代码抄的不解释,好用就完了 可以直从页面的文件结构中下载图片
    async function getResourceContent(page, url) {
    const { content, base64Encoded } = await page._client.send(
        "Page.getResourceContent",
        { frameId: String(page.mainFrame()._id), url }
    );
    return content;
    }

    for (let i = 1; i < 7139012; i++) {
        //爬了某网站几千张就被封了...自行寻找单页大图 url规律的网页进行访问抓取
        await page.goto(`https://xxxxxxx/posts/${i}`);

        let targetImg = await page.$("#image");
        if (targetImg) {
            const url = await page.$eval("#image", (i) => i.src);

            const content = await getResourceContent(page, url);
            const contentBuffer = Buffer.from(content, "base64");

            fs.writeFileSync(
                `./image/${Date.now()}.jpg`,
                contentBuffer,
                "base64"
            );
            console.log(`下载第${i}张`);
        }

        await page.waitFor(1000);
    }
    //等待
    console.log("结束了");

    browser.close();
}

load();

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
杜sir + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| vombel 发表于 2022-12-6 21:54
https://github.com/vombel/puppeteerDemo   把仓库丢出来
bigLeo 发表于 2022-12-6 09:51
liufu123 发表于 2022-12-6 09:52
带反扒的就不好用。。puppeteer这个挺多人用的,
GYHKL 发表于 2022-12-6 16:53

感谢分享,观摩观摩,学到了
 楼主| vombel 发表于 2022-12-6 21:53
liufu123 发表于 2022-12-6 09:52
带反扒的就不好用。。puppeteer这个挺多人用的,

反反爬技巧,可以通过evaluateOnNewDocument在页面加载前伪装,还有添加ua、referer,launch的args参数
liufu123 发表于 2022-12-7 09:02
vombel 发表于 2022-12-6 21:53
反反爬技巧,可以通过evaluateOnNewDocument在页面加载前伪装,还有添加ua、referer,launch的args参数{: ...

别闹了,阿里滑动都过不去,不是好自动化
wuai4444 发表于 2022-12-9 21:55
好资源,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-11 22:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表