赞
踩
Puppeteer是Google Chrome团队开发的一个Node库,它提供了一个高级API来控制Chrome或Chromium浏览器。Puppeteer可以进行网页自动化操作,包括导航、屏幕截图、生成PDF、捕获网络活动等。
在开始之前,确保你的开发环境中安装了Node.js和npm。接着,通过npm安装Puppeteer:
npm install puppeteer
首先,我们需要Node.js环境以及npm(Node包管理器)。Puppeteer可以通过npm安装:
npm install puppeteer
代理服务器可以是HTTP代理或SOCKS代理,你需要从可信赖的代理服务提供商获取代理IP和端口。确保代理IP可用,并且支持HTTP/HTTPS协议。
Puppeteer允许通过命令行参数或设置浏览器的代理来配置代理服务器。我们将通过设置浏览器的代理来实现。
const puppeteer = require('puppeteer'); (async () => { // 代理服务器信息 const proxyHost = "www.16yun.cn"; const proxyPort = "5445"; const proxyUser = "16QMSOML"; const proxyPass = "280651"; // 构建带有用户名和密码的代理服务器URL const proxyUrl = `http://${proxyUser}:${proxyPass}@${proxyHost}:${proxyPort}`; // 设置Puppeteer使用代理 const browser = await puppeteer.launch({ args: [ '--proxy-server=' + proxyUrl, // 使用完整的代理URL // 其他需要的启动参数... ] }); const page = await browser.newPage(); // 接下来添加页面导航和操作的代码... // 任务完成后关闭浏览器 await browser.close(); })();
await page.goto('https://example.com'); // 替换为实际的URL
await page.waitForSelector('img');
const imageSrcs = await page.evaluate(() => {
const images = document.querySelectorAll('img');
const srcs = Array.from(images).map(img => img.src);
return srcs;
});
const downloadImages = async (src) => {
const filename = src.split('/').pop();
const path = `./images/${filename}`;
await page.download(src, {path: path});
console.log(`图片下载成功:${filename}`);
};
for (let src of imageSrcs) {
await downloadImages(src);
}
await browser.close();
})();
对于通过JavaScript动态加载的图片,可能需要更复杂的等待策略,如等待特定的网络请求完成或使用page.waitForFunction等待页面达到某个状态。
在进行网页内容抓取时,必须遵守目标网站的robots.txt协议,尊重版权和隐私权。确保你的抓取行为是合法的,并且不会对网站的正常运行造成影响。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。