如何在 Node.js 中使用木偶师刮网站?
傀儡是一个 Node.js 库,它提供了一个高级应用编程接口来控制无头 Chrome 或 DevTools 协议上的 Chrome。它允许在无头/头戴式浏览器上自动化、测试和抓取网页。
安装木偶师:要使用木偶师,必须安装 Node.js。然后,可以使用 npm 包管理器在命令行中安装木偶师。
npm install puppeteer
使用木偶师:可以使用以下命令将木偶师库导入到您的脚本中:
const puppeteer = require('puppeteer');
重要的是要记住,木偶师是一个基于承诺的库,它执行对无头 Chrome 实例的异步调用。因此,我们用异步包装器包装它。这意味着代码会立即执行。
这里有一个简单的例子来截图一个页面:
java 描述语言
import Puppeteer
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
// Open new page in headless browser
const page = await browser.newPage();
// To visit page in browser
await page.goto('https://scrapethissite.com');
// Save Screenshot at Path
await page.screenshot({path: 'screenshot.png'});
// Close our browser instance
await browser.close();
})();
运行您的代码:将您的代码保存为 JavaScript 文件,并使用以下命令在命令行中运行它-
node filename.js
示例:下面的代码返回一个带有当年 NHL 曲棍球队名称和 Wins 的对象,
java 描述语言
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://scrapethissite.com/pages/forms/');
const textsArray = await page.evaluate(
() => [...document.querySelectorAll(
'#hockey > div > table > tbody > tr > td.name')]
.map(elem => elem.innerText)
);
const WinArray = await page.evaluate(
() => [...document.querySelectorAll(
'#hockey > div > table > tbody > tr > td.wins')]
.map(elem => elem.innerText)
);
var result = {};
textsArray.forEach((textsArray, i) =>
result[textsArray] = WinArray[i]);
console.log(result);
await browser.close();
})();
输出:
{ '波士顿布鲁因斯':' 36 ','水牛军刀':' 31 ','卡尔加里火焰':' 31 ','芝加哥黑鹰':' 36 ', ,'底特律红翼':' 34 ','埃德蒙顿石油人':' 37 ','哈特福德捕鲸人':' 31 ','洛杉矶国王':' 46 ', ,'明尼苏达北极星':' 27 ','蒙特利尔加拿大人':' 39 ','新泽西魔鬼':' 32 ','纽约岛民':' 25 ', '纽约流浪者':' 36 ','费城
版权属于:月萌API www.moonapi.com,转载请注明出处