Невозможно извлечь определенный текстовый элемент с веб-сайта кукловода. Хотите знать, почему это и как обойти это - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь создать веб-скребок для очистки моей страницы Venmo для проекта. Я могу заставить кукловода открыть страницу и перейти на мою страницу, а также войти, сохранив пользовательские данные Chrome, но я пытаюсь определить время, когда мне выслали деньги, и стоимость этой транзакции. Конкретно только моя самая последняя транзакция.

Я знаю, что скребок работает и возвращает мне значения, потому что я создал новый document.quereySelector, который просто удаляет мое имя с верхней части сайта. Когда я запускаю сценарий без .innerHTML или .innerText, я не получаю никаких ошибок, но два значения, которые я ищу, а не мое имя, возвращают ноль, но мое имя возвращается мне. Когда я добавляю .innerHTML или .innerText, я получаю сообщение об ошибке

valuation failed: TypeError: Cannot read property 'innerHTML' of null
at __puppeteer_evaluation_script__:4:58

Я запускаю свои элементы в консоли элемента inspect, и они оба возвращаются мне, поэтому у меня возникают проблемы с пониманиемпочему консоль на веб-странице вернет их, а мой сценарий - нет. Это не просто окно Chromium, созданное кукловодом, которое также вводит меня в заблуждение, потому что я также ввел document.quereySelector в эту консоль, и он возвращается с тем, что должен.

const puppeteer = require('puppeteer');

//sets url to nav to 
const url = 'https://venmo.com/user';

(async () =>  {

//open broswer window and opens a new page
const browser = await puppeteer.launch({headless: false, args: ["--user- 
data-dir=./Google/Chrome/User Data/"]}); 
try{
const page = await browser.newPage();

//sets view to 1920x1080
await page.setViewport({ width: 1280, height: 720});

//navigates to the specified url
await page.goto(url,{waitUntil: 'domcontentloaded'});

//playing with wait states incase the document wasnt loading correctly
await page.waitFor(1000);

//function for evaluating the webpage
const  data = await page.evaluate(() => {

    let amount =  
    document.querySelector('span.bold.medium.green').innerHTML
    let timePayed = document.querySelector('a.grey_link').innerHTML

    //this function prints my name 
    let test = document.querySelector('span.bold').innerHTML

    return { 
    amount,
    timePayed,
    test
    }
}); 


//displays the data scraped
 console.log(data);
}
catch(err) {
     console.error(err.message);
}


debugger;

await browser.close();

})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...