• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Otrzymywanie danych ze strony

Object Storage Arubacloud
0 głosów
251 wizyt
pytanie zadane 2 stycznia 2018 w Python przez DODO Bywalec (2,950 p.)

Witam.

Chcę napisać bota do zdobywania punktów na stronie dogry.pl.

Mianowicie, chodzi o bota, który będzie oceniał zdjęcia w zakładce https://dogry.pl/image/star/?utm_source=site&utm_medium=menu&utm_campaign=rate .

Kod:

import pyautogui
import time

time.sleep(10)                  # program poczeka na włączenie przeze mnie praeglądarki i karty ze stroną

for i in range(0, 10):          # pętla
    x = 0                       # tu trzeba pobrać pozycję elementu na stronie
    y = 0                       # i tu też
    pyautogui.moveTo(x+3, y+3)  # przemieszczenie kursora do x, y
    pyautogui.click()           # klik
    time.sleep(0)               # do czasu aż strona się nie załaduje (tę informację też trzeba jakoś zdobyć)



Strona działa tak, że jest obrazek, klika się gwiazdkę, strona AUTOMATYCZNIE się przeładowywuje, klika się gwiazdkę, itd. Tylko jest problem, co 3-4 oceny div z gwiazdkami przemieszcza się o paredziesiąt pikseli w górę lub w dół. 

I teraz to, do czego potrzebuję pomocy:

- Jak pobrać pozycję elementu w pikselach na stronie? Jakiej biblioteki do tego użyć?

- Jak pobrać moment, wykryć zdarzenie załadowania się strony?

 

Za wszystkie odpowiedzi dziękuję z góry :)

1 odpowiedź

0 głosów
odpowiedź 2 stycznia 2018 przez marcin99b Szeryf (82,080 p.)
możesz sprawdzać css, albo jeśli to działa na zasadzie ruszania kursorem na "żywych" operacjach, możesz spróbować robienia screenów przed każdym kliknięciem i sprawdzania w programie typu opencv (do rozpoznawania elementów na zdjęciu, np wykrywanie twarzy), czy przycisk jest tam gdzie chcesz kliknąć

możesz też dodawać JS, który automatycznie będzie klikał w przycisk o danym ID, gorzej jeśli jest on zmienny
komentarz 3 stycznia 2018 przez DODO Bywalec (2,950 p.)
Jak dodać JS, który automatycznie będzie klikał w przycisk?

Jak sprawdzać css?
komentarz 4 stycznia 2018 przez marcin99b Szeryf (82,080 p.)
No to już zależy od języka, poszukaj tego, na stackoverflow powinno coś być

Ogólnie całość jest oparta o komunikacje http get i http post (wysyłasz dane i odbierasz)
Ale ręczne budowanie posta, który wysyła jakaś strona (w programie wireshark można śledzić co wysyłamy i pobieramy), może być troche męczące, więc możesz symulować działanie przeglądarki

Wejdź w konsole i wpisując tam przykładowo document.getElementById("id-przycisku").click() spróbuj wcisnąć przycisk
Problem może być, jeśli przycisk jest wewnątrz canvas, wtedy lepszym sposobem będzie po prostu robienie tych screenów i sprawdzanie w którym miejscu jest nasz przycisk, najlepiej żeby przeszukiwało tylko obszar, na którym może się on pojawić
komentarz 5 stycznia 2018 przez DODO Bywalec (2,950 p.)

na stronie jest coś takiego:

<div class="game-rating rate-undefined" data-ajax-url="/image/star/image/431202/">
                                            <span data-rating="2"></span>
                                            <span data-rating="4"></span>
                                            <span data-rating="6"></span>
                                            <span data-rating="8"></span>
                                            <span data-rating="10"></span>
</div>

chcę kliknąć to: <span data-rating="10">

za pomocą

document.getElementsByClassName("game-rating rate-undefined")

mogę otrzymać ten pojemnik dookoła gwiazdek. Jak dostać się do którejś z nich?

Podobne pytania

+2 głosów
1 odpowiedź 398 wizyt
+1 głos
1 odpowiedź 1,919 wizyt
pytanie zadane 28 marca 2018 w Python przez pionk18 Obywatel (1,590 p.)
0 głosów
0 odpowiedzi 205 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...