我想加载页面,然后在获取内容之前等待文本(或本例中的类)呈现。
此示例有效。
async function test() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://sunnythailand.com');
// Wait until the page is fully rendered
while (content.indexOf("scrapebot_description") < 0) {
console.log("looking for scrapebot_description")
await new Promise((resolve)=>setTimeout(()=> resolve() ,1000));
content = await page.content();
}
console.log("scrapebot_description FOUND!!!")
await browser.close();
}
我的问题是,我可以通过木偶操作者轻松完成这项工作吗?
我试过了:
await page.waitForFunction('document.querySelector("scrapebot_description")');
但那只是永远挂在那里,什么都没发生...... (老实说,我不明白querySelector是什么,所以也许问题就在那里)
我也试过这个:
var checkText = "scrapebot_description"
await page.evaluate((checkText) => {
console.log("scrapebot_description FOUND IT!!");
},{checkText});
这也行不通。
这是在页面上呈现的最后一个等待的内容......
<span class="hide scrapebot_description ng-binding" ng-bind="'transFrontDescription' | translate">
答案 0 :(得分:2)
你可以这样做:
async function test() {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://sunnythailand.com');
const selector = '.scrapebot_description' // or #scrapebot_description
await page.waitForSelector(selector)
console.log("scrapebot_description FOUND!!!")
await browser.close();
}