Właśnie z tym problemem się mierzę, bo samo wywołanie pętli i jej uruchomienie nie jest dla mnie problemem. Problemem jest to, że po odświeżeniu ona nie działa. Napisałem wiadomość.
Jeśli umiesz programować to zamiast wtyczki do przeglądarki możesz spróbować napisać skrypt do web scrapingu, który będzie automatycznie sprawdzał, czy na stronie są takie dane jakie potrzebujesz. Jest to o tyle lepsze, ponieważ nie jesteśmy ograniczeni do uprawnień wtyczki / przeglądarki i z pobranymi danymi możemy zrobić cokolwiek chcemy np zapisać na dysku.
Tutaj przykład prymitywnego skryptu node.js, który częściowo robi to co potrzebujesz. Jeśli mamy zainstalowaną przeglądarkę chrome na komputerze to skrypt otworzy ją w nowym oknie, odpali serwis 4programmers, wejdzie w ten wątek i sprawdzi kto jest autorem ostatniego wpisu na tej podstronie (w tym prostym przykładzie nie uwzględniam paginacji). Jeśli nick będzie inny niż Ineffable
to strona zostanie przeładowana i wszystko wykona się od nowa.
Link do dokumentacji biblioteki: https://pptr.dev/
{
"name": "4programmers-web-scraping",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"puppeteer": "^16.1.0"
}
}
// Importujemy bibliotekę do web scrapingu.
const puppeteer = require('puppeteer');
(async () => {
// Konfigurujemy okno przeglądarki
const browser = await puppeteer.launch({
headless: false, // <-- opcja ustawiona na true otwiera skrypt jedynie w konsoli
defaultViewport: null, // <-- ustawiamy okno przeglądarki na cały monitor
args: [
'--start-maximized'
],
});
// Pobierany otwartą zakładkę
const page = (await browser.pages())[0];
// Musimy podpiąć event przed otwarciem danej podstrony
page.on('domcontentloaded', async () => {
// Wyszukujemy wszystkie posty na stronie
const posts = await page.$$('.card.card-post');
// Pobieramy ostatni post
const lastPost = posts.at(-1);
// Sprawdzamy ostatnią nazwę użytkownika
const lastAuthorNickname = await lastPost.evaluate((post) => {
const nickname = post.querySelector('.post-author');
return nickname.textContent;
});
// Printujemy znalezioną nazwę
console.dir(lastAuthorNickname);
// Sprawdzamy, czy jest to nazwa, której szukamy
if (lastAuthorNickname !== 'Ineffable') {
await page.evaluate(() => {
location.reload(); // Jeśli nie to odświeżamy okno przeglądarki
});
}
})
// Wchodzimy na 4programmers
await page.goto('https://4programmers.net/Forum/Webmastering/362793-wymuszenie_odswiezania_strony_do_momentu_zaciagniecia_wskazanych_danych');
})();