Я пытаюсь создать веб-скребок для очистки моей страницы 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();
})();