第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

HTML 無法進(jìn)入 node js puppeteer

HTML 無法進(jìn)入 node js puppeteer

縹緲止盈 2022-12-22 12:55:12
錯(cuò)誤無法讀取 null 的屬性“querySelectorAll”我正在抓取這個(gè)網(wǎng)站,當(dāng)我在控制臺(tái)中寫下以下幾行時(shí),它會(huì)給我 HTML。但是當(dāng)我從 puppeteer 中抓取 HTML 時(shí),它給了我錯(cuò)誤document.querySelectorAll('#stroke-play-container > .stroke-play-leaderboard > .the-leaderboard.with-rolex > table.leaderboard.leaderboard-table.large')[0].nextSibling;代碼'use strict'; const puppeteer = require('puppeteer'); function run() { return new Promise(async (resolve, reject) => {    try {        const browser = await puppeteer.launch({        headless : false        });        const page = await browser.newPage();        await page.goto("https://www.pgatour.com/leaderboard.html");        await page.evaluate(`window.scrollTo(0, document.body.scrollHeight)`);        await page.waitFor(5000);            let urls = await page.evaluateHandle(() => {            let results = [];            var parser = new DOMParser();                        var node = document.querySelectorAll('#stroke-play-container > .stroke-play-leaderboard > .the-leaderboard.with-rolex > table.leaderboard.leaderboard-table.large')[0].nextSibling;                       if(node){            var $ = parser.parseFromString(node, 'text/html');                                  return {                name: $.querySelectorAll('table > tbody:nth-child(1) > tr > td.player-name > div > div.player-name-col').innerText            };            }            else{                return 'error';            }        })        browser.close();        return resolve(urls);    } catch (e) {        return reject(e);    }})} run().then(console.log).catch(console.error);
查看完整描述

2 回答

?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

像這樣嘗試:


let names = await page.evaluate(() => {

  let css = '.the-leaderboard.with-rolex > table.leaderboard.leaderboard-table.large + div div.player-name-col'

  let divs = [...document.querySelectorAll(css)]

  return divs.map(div => div.innerText)

})

我不確定你試圖用 DOMParser 完成什么,你永遠(yuǎn)不需要使用它。


查看完整回答
反對(duì) 回復(fù) 2022-12-22
?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊

編輯:正如評(píng)論中所指出的,請(qǐng)注意 pgatours.com 的服務(wù)條款,它不允許進(jìn)行抓取、抓取等操作。以下解決方案僅用于說明如何解決您的問題背后的通用技術(shù)點(diǎn).


我認(rèn)為這可能是由于 Puppeteer 使用的默認(rèn)視口大小所致。該網(wǎng)站以較小的分辨率隱藏了您正在尋找的內(nèi)容,因此出現(xiàn)了問題。


使它對(duì)我有用的是明確指定視口大小,如下所示:


page.setViewport({ width: 1200, height: 1000 })

所以你的代碼會(huì)變成:


'use strict';


 const puppeteer = require('puppeteer');

 function run() {

 return new Promise(async (resolve, reject) => {

    try {



        const browser = await puppeteer.launch({

        headless : false

        });


        const page = await browser.newPage();

        page.setViewport({ width: 1200, height: 1000 })



        await page.goto("https://www.pgatour.com/leaderboard.html");


        await page.evaluate(`window.scrollTo(0, document.body.scrollHeight)`);

        await page.waitFor(5000);

    

        let urls = await page.evaluateHandle(() => {

            let results = [];

            var parser = new DOMParser();

            

            var node = document.querySelectorAll('#stroke-play-container > .stroke-play-leaderboard > .the-leaderboard.with-rolex > table.leaderboard.leaderboard-table.large')[0].nextSibling;

           

            if(node){


            var $ = parser.parseFromString(node, 'text/html');

            

          

            return {

                name: $.querySelectorAll('table > tbody:nth-child(1) > tr > td.player-name > div > div.player-name-col').innerText

            };

            }

            else{

                return 'error';

            }


        })

        browser.close();

        return resolve(urls);

    } catch (e) {

        return reject(e);

    }

})

}

run().then(console.log).catch(console.error);


查看完整回答
反對(duì) 回復(fù) 2022-12-22
  • 2 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)