无法使用 puppeteer 从网页中获取名称
Can't grab a name from a webpage using puppeteer
我在 node
中结合 puppeteer
创建了一个脚本,用于获取在网页中填写输入内容时填充的名称。以下是获取该名称的方法 - 打开该网页后,将 16803
放在 CP Number
旁边,然后点击 search
按钮。
我的以下脚本可以通过按搜索按钮成功填写输入和填充名称。我不能做的是获取结果的名称。我定义的选择器是完美的。我想在不使用 return.
的情况下即时获取名称
到目前为止我已经尝试过:
const puppeteer = require("puppeteer");
const url = "https://www.icsi.in/student/Members/MemberSearch.aspx";
(async () => {
const browser = await puppeteer.launch({headless:false});
const [page] = await browser.pages();
await page.goto(url, {waitUntil: 'networkidle2'});
await page.type('input[name="dnn$ctr410$MemberSearch$txtCpNumber"]', '16803');
await page.click('a#dnn_ctr410_MemberSearch_btnSearch');
await page.waitFor('.name_head > span');
await page.evaluate(async () => {
const elem = document.querySelector('.name_head > span').innerText;
console.log(elem);
});
await page.close();
})();
上面的脚本给我一个空白输出。
How can I fetch the name from that site?
.evaluate
将 运行 浏览器内的脚本。您需要执行以下操作之一,
Return 并记录在外
大多数时候这是您的预期选择。您将需要获取该名称并在以后使用它。您可以 return 值或 JSHandle。
const elemText = await page.evaluate(async () => document.querySelector('.name_head > span').innerText);
console.log(elemText);
使用 dumpio
启用 console
启动浏览器时,使用 dumpio: true
作为选项。它会将浏览器进程 stdout 和 stderr 通过管道传输到 process.stdout 和 process.stderr。默认为假。
puppeteer.launch({dumpio:true})
使用 page.on('console')
启用 console
page.on('console', msg => console.log('PAGE LOG:', msg.text()));
自己看浏览器控制台
使用 headless: false
和 devtools: true
启动浏览器,您可以自己查看日志。
puppeteer.launch({ headless: false, devtools: true })
我在 node
中结合 puppeteer
创建了一个脚本,用于获取在网页中填写输入内容时填充的名称。以下是获取该名称的方法 - 打开该网页后,将 16803
放在 CP Number
旁边,然后点击 search
按钮。
我的以下脚本可以通过按搜索按钮成功填写输入和填充名称。我不能做的是获取结果的名称。我定义的选择器是完美的。我想在不使用 return.
的情况下即时获取名称到目前为止我已经尝试过:
const puppeteer = require("puppeteer");
const url = "https://www.icsi.in/student/Members/MemberSearch.aspx";
(async () => {
const browser = await puppeteer.launch({headless:false});
const [page] = await browser.pages();
await page.goto(url, {waitUntil: 'networkidle2'});
await page.type('input[name="dnn$ctr410$MemberSearch$txtCpNumber"]', '16803');
await page.click('a#dnn_ctr410_MemberSearch_btnSearch');
await page.waitFor('.name_head > span');
await page.evaluate(async () => {
const elem = document.querySelector('.name_head > span').innerText;
console.log(elem);
});
await page.close();
})();
上面的脚本给我一个空白输出。
How can I fetch the name from that site?
.evaluate
将 运行 浏览器内的脚本。您需要执行以下操作之一,
Return 并记录在外
大多数时候这是您的预期选择。您将需要获取该名称并在以后使用它。您可以 return 值或 JSHandle。
const elemText = await page.evaluate(async () => document.querySelector('.name_head > span').innerText);
console.log(elemText);
使用 dumpio
启用 console
启动浏览器时,使用 dumpio: true
作为选项。它会将浏览器进程 stdout 和 stderr 通过管道传输到 process.stdout 和 process.stderr。默认为假。
puppeteer.launch({dumpio:true})
使用 page.on('console')
启用 console
page.on('console', msg => console.log('PAGE LOG:', msg.text()));
自己看浏览器控制台
使用 headless: false
和 devtools: true
启动浏览器,您可以自己查看日志。
puppeteer.launch({ headless: false, devtools: true })