21xrx.com
2024-05-20 09:46:24 Monday
登录
文章检索 我的文章 写文章
使用Node.js Puppeteer的$$eval方法进行元素选择和操作
2023-07-24 10:38:07 深夜i     --     --
Node js Puppeteer $$eval方法 元素选择 操作

Node.js Puppeteer是一个基于Chrome的无界面浏览器自动化工具,它提供了丰富的API来进行网页操作。其中,$$eval方法是一个非常强大的方法,可以用来选择和操作网页上的元素。

首先,我们需要安装Node.js和Puppeteer。在安装完成后,我们可以开始使用$$eval方法。

$$eval方法接受两个参数:选择器和一个函数。选择器用于找到匹配的元素,函数用于在匹配的元素上执行操作。

首先,让我们看一个简单的例子。假设我们有一个包含一系列链接的网页,我们想要获取所有链接的文字内容。我们可以使用$$eval方法来实现这个功能。


const puppeteer = require('puppeteer');

(async () => {

 const browser = await puppeteer.launch();

 const page = await browser.newPage();

 await page.goto('http://example.com');

 const linkTexts = await page.$$eval('a', links => {

  return links.map(link => link.textContent);

 });

 console.log(linkTexts);

 

 await browser.close();

})();

在上面的例子中,我们使用page.$$eval方法来选择所有'a'元素。然后,我们在选择的每个链接上执行一个函数,该函数返回链接的textContent属性值。最后,我们将所有链接的文本内容打印到控制台。

除了获取元素的属性值之外,我们还可以使用$$eval方法来进行更复杂的操作。例如,我们可以使用$$eval方法来点击按钮、填写表单等。

让我们看一个更复杂的例子。假设我们有一个登录页面,我们想使用Puppeteer自动填写表单并点击登录按钮。


const puppeteer = require('puppeteer');

(async () => {

 const browser = await puppeteer.launch();

 const page = await browser.newPage();

 await page.goto('http://example.com/login');

 await page.$$eval('input[type="text"]', inputs => {

  inputs[0].value = 'username';

  inputs[1].value = 'password';

 });

 await page.$$eval('button[type="submit"]', buttons => {

  buttons[0].click();

 });

 await browser.close();

})();

在上面的例子中,我们首先选择所有'text'类型的输入元素,并使用$$eval方法来填写用户名和密码。然后,我们选择所有'text'类型的按钮元素,并使用$$eval方法来点击第一个按钮。

通过使用Node.js Puppeteer的$$eval方法,我们可以方便地进行元素选择和操作,从而实现各种自动化任务。无论是获取元素的属性值,还是执行复杂的操作,$$eval方法都是一个非常强大的工具。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复