ОК, вы на правильном пути, но вам просто нужно изменить несколько вещей.
- Во-первых, я понятия не имею, откуда берется ваша переменная
afterJS
?В любом случае вам это не понадобится. - Вы просите ввести данные в поля ввода
username
и password
, но не просите puppeteer
фактически нажать на вход в систему.кнопка для завершения процесса входа в систему. page.evaluate()
используется для выполнения кода JavaScript внутри контекста страницы (т. е. на веб-странице, загруженной в удаленный браузер).Поэтому вам не нужно использовать его здесь.
Я бы реорганизовал ваш код, чтобы он выглядел следующим образом:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.instagram.com/accounts/login/');
await page.waitForSelector('input[name="username"]');
await page.type('input[name="username"]', 'username');
await page.type('input[name="password"]', 'password');
await page.click('button[type="submit"]');
// Add a wait for some selector on the home page to load to ensure the next step works correctly
await page.pdf({path: 'page.pdf', format: 'A4'});
await browser.close();
})();
Надеюсь, это установит вам правильный путь к получениюмимо страницы входа в систему!
Обновление 1:
Вы задали вопрос о разборе текста элемента в Instagram ... к сожалению, у меня там нет учетной записипоэтому я не могу дать вам точного решения, но, надеюсь, это все еще имеет определенную ценность.
Итак, вы пытаетесь оценить текст элементов, верно?Вы можете сделать это следующим образом:
const text = await page.$eval(cssSelector, (element) => {
return element.textContent;
});
Все, что вам нужно сделать, это заменить cssSelector
селектором элемента, из которого вы хотите получить текст.
Обновить2:
ОК, наконец, вы задали вопрос о прокрутке вниз до элемента внутри родительского элемента.Я не собираюсь красть кредит у кого-то другого, поэтому вот ответ на этот вопрос:
Как перейти к элементу внутри div?
Что вы?Мне нужно будет просто следовать инструкциям и заставить его работать с кукловодом, как показано ниже:
await page.evaluate(() => {
const lastLink = document.querySelectorAll('h3 > a')[2];
const topPos = lastLink.offsetTop;
const parentDiv = document.querySelector('div[class*="eo2As"]');
parentDiv.scrollTop = topPos;
});
Имейте в виду, что я не тестировал этот код - я просто непосредственно следовалответ в URL, который я предоставил.Это должно работать!