代码之家  ›  专栏  ›  技术社区  ›  user254694

页评估似乎没有发生

  •  1
  • user254694  · 技术社区  · 6 年前

    根据主题,我的页面。评估似乎未运行。

    crawler.crawlUrl = async function(url) {
        if (!url) {
            return;
        }
        const page = await crawler.browser.newPage();
        await page.goto(url);
        console.log('got to here');
        await page.evaluate(() => {
            const links2 = document.querySelectorAll('*');
            console.log('what');
            console.log(links2);
            return Promise.resolve(true);
    
        }).catch(function(er){
            console.log(er);
        });
    }
    
    crawler.crawlUrl('https://www.sundhed.dk');
    

    运行此命令时,我会将“Got to here”语句记录到终端,但不会发生其他任何事情。它只是永远存在。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Rippo    6 年前

    试着等待一些东西回来!我的经验法则是,每次我请求一个新资源(单击按钮,转到url)时 总是 执行 waitForXXX

    await page.goto(url);
    await page.waitForSelector("h1");
    

    您可能需要将h1替换为页面上确实存在的内容。

    View list of puppeteer selectors

    我创建了一个适合我的脚本:-

    试着等待一些东西回来!我的经验法则是,每次我请求一个新资源(单击按钮,转到url)时 总是 执行 等待XXX

    等待页面。转到(url);
    等待页面。waitForSelector(“h1”);
    

    您可能需要将h1替换为页面上确实存在的内容。

    查看木偶选择器列表

    我创建了一个适合我的脚本:-

    'use strict'; 
    
    const puppeteer = require('puppeteer'); 
    
    async function run() {
    
        const browser = await puppeteer.launch( {
            headless: false //true
        }); 
    
        const page = await browser.newPage(); 
        await page.setViewport({ width:1024, height:800});
        await page.goto('https://www.sundhed.dk');
        await page.waitForSelector('h1');
    
        const innerText = await page.evaluate(() => {
            return document.querySelector("H1").innerText;
        });
    
        console.log(innerText);
    
        await browser.close(); 
    }; 
    
    run();