Wymuszenie odświeżania strony do momentu zaciągnięcia wskazanych danych.

0

Dzień dobry. Jako świeżak witam wszystkich serdecznie.

Chciałbym zapytać o jedną rzecz, która znacząco ułatwiłaby mi pracę.
Na stronie internetowej w rubryce "nazwisko" znajdują się nazwiska zaciągane z bazy wraz z innymi danymi. Czy istnieje możliwość, aby z poziomu konsoli wymusić daną komendą odświeżanie strony do momentu, kiedy w polu "nazwisko" pojawi się to konkretne, na którym mi zależy? Np. Nowak?

0

Chodzi Ci o to, żeby przy wpisywaniu podpowiadało Ci istniejące nazwiska?

0
witeks44 napisał(a):

Chodzi Ci o to, żeby przy wpisywaniu podpowiadało Ci istniejące nazwiska?

Nie. Już tłumaczę precyzyjniej.

Jest strona xyz.pl - nie mam z nią nic wspólnego.
Wchodząc w konkretną zakładkę na tej stronie mamy zaciągane z bazy losowo dane personalne osoby - imię, nazwisko, adres, itd. Po odświeżeniu zaciągają się z bazy dane kolejnej osoby, kolejne odświeżenie - kolejna osoba.

Zależy mi, abym nie musiał tego odświeżać tego ręcznie do momentu, aż trafię na interesującą mnie osobę, tylko żeby wymusić odświeżanie automatyczne do momentu aż nie zostaną zaciągnięte dane tej konkretnej osoby, bazując na odniesieniu do nazwiska.

I moje pytanie jako laika, czy jest to w ogóle możliwe do wykonania z poziomu konsoli przeglądarki?

1

Nie wnikając po co ci to i jaka jest struktura strony tak.
Robisz pętle i co krok sprawdzasz czy interesujace nazwisko znajduje się na stronie jak nie to location.reload().
A jak nie znasz programowania to ściągnij sobie powerautomate od microsoftu i wyklikaj.

2
Schadoow napisał(a):

Nie wnikając po co ci to i jaka jest struktura strony tak.
Robisz pętle i co krok sprawdzasz czy interesujace nazwisko znajduje się na stronie jak nie to location.reload().
A jak nie znasz programowania to ściągnij sobie powerautomate od microsoftu i wyklikaj.

Przecież po odświeżeniu strony pętla się przerwie i zostanie usunięta. Jedyne rozwiązanie jakie tu widzę to napisać wtyczkę. Content script będzie sprawdzał wartość pola i odświeżał jeśli nie jest ona odpowiednia. Mam trochę doświadczenia w pisaniu wtyczek i mogę pomóc.

0
Gouda105 napisał(a):
Schadoow napisał(a):

Nie wnikając po co ci to i jaka jest struktura strony tak.
Robisz pętle i co krok sprawdzasz czy interesujace nazwisko znajduje się na stronie jak nie to location.reload().
A jak nie znasz programowania to ściągnij sobie powerautomate od microsoftu i wyklikaj.

Przecież po odświeżeniu strony pętla się przerwie i zostanie usunięta. Jedyne rozwiązanie jakie tu widzę to napisać wtyczkę. Content script będzie sprawdzał wartość pola i odświeżał jeśli nie jest ona odpowiednia. Mam trochę doświadczenia w pisaniu wtyczek i mogę pomóc.

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ść.

1
Ineffable napisał(a):

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');
})();
0
Xarviel napisał(a):
Ineffable napisał(a):

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');
})();

Dziękuję bardzo!

Potestuję!

1 użytkowników online, w tym zalogowanych: 0, gości: 1