如何搜索特定 URL 的页面并使用 Puppeteer 单击它?
How do I search a page for a specific URL and click on it using Puppeteer?
过去几天我一直在研究如何使用 Puppeteer 在页面中搜索包含特定单词的 link,然后单击第一个。
该页面的 HTML 包含多个 link,例如:
<a href="https://www.example.com/home">Example - Home</a>
<a href="https://www.example.com/about">Example - About</a>
<a href="https://www.example.com/contact">Example - Contact</a>
我想让它找到第一个 url,其中包含单词 "example.com",然后单击 link。如果该页面上没有这样的 URL,我希望它可以单击另一个按钮。
我对 Javascript 不是特别熟悉,感觉我已经尝试了多种使用 document.querySelector
和 document.querySelectorAll
的不同变体(以及这些的 Puppeteer 版本 -即 page.$
和 page.$$
),但其中 none 完全有效。
如果有人能指出正确的方向,我将不胜感激!
您可以为此使用 attribute selector [attr*=value]
。引自 link:
Represents elements with an attribute name of attr whose value contains at least one occurrence of value within the string.
要在puppeteer中使用选择器,可以使用page.$
函数查询第一个元素:
const link = await page.$('a[href*="example.com"]');
if (link) {
await link.click();
} else {
// no link with such attribute on the page, click another button...
}
过去几天我一直在研究如何使用 Puppeteer 在页面中搜索包含特定单词的 link,然后单击第一个。
该页面的 HTML 包含多个 link,例如:
<a href="https://www.example.com/home">Example - Home</a>
<a href="https://www.example.com/about">Example - About</a>
<a href="https://www.example.com/contact">Example - Contact</a>
我想让它找到第一个 url,其中包含单词 "example.com",然后单击 link。如果该页面上没有这样的 URL,我希望它可以单击另一个按钮。
我对 Javascript 不是特别熟悉,感觉我已经尝试了多种使用 document.querySelector
和 document.querySelectorAll
的不同变体(以及这些的 Puppeteer 版本 -即 page.$
和 page.$$
),但其中 none 完全有效。
如果有人能指出正确的方向,我将不胜感激!
您可以为此使用 attribute selector [attr*=value]
。引自 link:
Represents elements with an attribute name of attr whose value contains at least one occurrence of value within the string.
要在puppeteer中使用选择器,可以使用page.$
函数查询第一个元素:
const link = await page.$('a[href*="example.com"]');
if (link) {
await link.click();
} else {
// no link with such attribute on the page, click another button...
}