- 自动会话管理
- 锁定 195 个国家/地区的任意城市
- 无限并发会话
如何在 Puppeteer 中通过 CSS 选择器查找元素?
在进行网页抓取时,CSS 选择器是最有效的 HTML 页面解析方法之一。在 Node.js 和 Puppeteer 中,您可将 CSS 选择器与 page.$
和 page.$$
方法结合使用。这两大方法让您可以使用熟悉的 CSS 语法与网页元素进行交互。
以下示例代码展示了使用这两大方法查找网页元素的具体操作,并附有详细的注释,以帮助您理解每个操作步骤。
const puppeteer = require('puppeteer');
async function run() {
// Launch a new browser instance
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Navigate to the target webpage
await page.goto("https://httpbin.dev/html", { waitUntil: 'domcontentloaded' });
// Get the first matching element
const firstParagraph = await page.$("p");
console.log("First paragraph element found:", firstParagraph);
// Get all matching elements
const allParagraphs = await page.$$("p");
console.log("Total paragraphs found:", allParagraphs.length);
// Extract and log the text content of the first paragraph
const firstParagraphText = await page.$eval("p", element => element.innerText);
console.log("Text of the first paragraph:", firstParagraphText);
// Extract and log the href attribute of the first anchor tag
const firstAnchorHref = await page.$eval("a", element => element.href);
console.log("Href of the first anchor tag:", firstAnchorHref);
// Count the total number of paragraph elements
const paragraphCount = await page.$$eval("p", elements => elements.length);
console.log("Total number of paragraph elements:", paragraphCount);
// Modify the inner text of the first paragraph
await page.$eval("p", element => element.innerText = "New text for the first paragraph");
console.log("Modified the text of the first paragraph.");
// Close the browser
await browser.close();
}
// Run the function
run();
在本示例中,我们执行了以下操作:
- 启动新的浏览器实例:这将启动一个由 Puppeteer 控制的新浏览器。
- 导航至目标网页:通过
goto
方法导航至指定 URL 并等待页面的 DOM 内容完全加载完毕。 - 获取第一个匹配元素:通过
page.$
方法检索与 CSS 选择器p
匹配的第一个元素。 - 获取所有匹配元素:通过
page.$$
方法检索与 CSS 选择器p
匹配的所有元素。 - 提取并记录第一段的文本内容:通过
page.$eval
方法在第一个匹配元素的上下文中评估一个函数,并返回其innerText
。 - 提取并记录第一个锚点标签的 href 属性:通过
page.$eval
方法检索第一个a
标签的href
属性。 - 计算段落元素的总数: 通过
page.$$eval
方法在所有匹配元素的上下文中评估一个函数,并返回总数。 - 修改第一段的内部文本:通过
page.$eval
方法更改与p
匹配的第一个元素的innerText
。 - 关闭浏览器:这可确保浏览器实例在脚本完成后正确关闭。
注意:在尝试查找元素前,务必要等待页面完全加载完毕,特别是对于包含动态内容的页面。详情请参阅《如何在 Puppeteer 中等待页面加载?》一文。
如想了解其他元素查找方法,也可参阅《如何在 Puppeteer 中通过 XPath 查找元素?》一文。
结语
将 CSS 选择器与 Puppeteer 搭配使用可使网页抓取和自动化任务变得简单、高效。通过了解和使用这些方法,您可与网页元素高效进行交互,并提取有价值的数据。
获得全球 超20000 位客户的信赖
TRUSTED BY 超20000 CUSTOMERS WORLDWIDE
欢迎来到 云抓取