Czytanie elementów strony za pomocą selenium

Odpowiedz Nowy wątek
2018-11-17 18:37
0

Witam,
Chce wyłuskać pewne dane ze strony, ale nie mam pomysłu czy dobrze chcę to zrobić. Nie jestem pewny czy da się to w ogóle zrobić. Potrzebuje wyciągnąć to co jest w span na SS "113". Tak na prawdę potrzebuje całą tabelę wyciągnąć ale wystarczy żebym zobaczył zasadę działania co robię źle. Strona jest odświeżana co chwilę, a w źródle strony jest klasa init, w której nic nie ma. Dopiero po wejściu na stronę uzupełnia się o potrzebne mi dane. Nie jestem pewny ale pewnie to AJAX.

Pozostało 580 znaków

2018-11-17 19:26
0

@Kardam: Możesz napisać o jaką stronę chodzi? :)

Pozostało 580 znaków

2018-11-17 19:35
0
artur_waw napisał(a):

@Kardam: Możesz napisać o jaką stronę chodzi? :)

http://sip.ztm.kielce.pl/odjazdyFS.aspx?id=437 Dokładnie o tą

Pozostało 580 znaków

2018-11-17 20:14
0

Jasne że się da... to python.. wszystko się da ;)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://sip.ztm.kielce.pl/odjazdyFS.aspx?id=437")

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "realtable"))
    )
finally:
    elements = element.find_elements_by_tag_name('tr')
    print(len(elements))
    print(elements[1].text)

Pozostało 580 znaków

2018-11-17 20:15
0

Z telefonu pisze. Ale otwkrz sobie konsole i zrob filtracje na network xhl chyba tak sie to pisalo i oblukaj sobie pakiety.

Tam w jsonie moga byc te dane wysylane jak zlapiesz to sprawdz jaki to jest reqest http i sprobuj go soreparowac.

Pozostało 580 znaków

2018-11-17 21:55
0

@Arthan, dziękuję lepiej nie mogłem sobie tego wymarzyć. W pythonie nigdy nie pisałem, uzyłem go dopiero pierwszy raz do tego projektu. Powiem Ci, że w Pythonie wszystko się da i bardzo zaimponował mi ten język. Mam jeszcze tylko pytanie ponieważ ten kod zmodyfikowałem sobie, nie wiem czy nawet poprawnie bo chciałem całą tablice wyciągać i nie wiem czemu pierwszy rekord to tylko Numer + czas, a pomijany jest ten string "kierunku". Dziękuje jeszcze raz. Teraz rozgryzam pythona, żeby to jakoś do pliku wrzucić :)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://sip.ztm.kielce.pl/odjazdyFS.aspx?id=437")

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "realtable"))
    )
finally:
    elements = element.find_elements_by_tag_name('tr')
    for i in range(0, 10):
        print(elements[i].text)
edytowany 3x, ostatnio: Kardam, 2018-11-17 21:58

Pozostało 580 znaków

2018-11-17 23:31
0

W momencie odczytu ta komórka ma visibility na hidden, dopiero po chwili się robi widoczna. Text zwraca tylko widoczny tekst.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
driver = webdriver.Firefox()
driver.get("http://sip.ztm.kielce.pl/odjazdyFS.aspx?id=437")

try:
    table = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "realtable"))
    )
finally:
    elements = table.find_elements_by_tag_name('tr')
    for element in elements:
        #print(element.get_attribute('innerHTML'))
        spans = element.find_elements_by_tag_name('span')

        route = spans[0].get_attribute("textContent")
        frow = spans[1].get_attribute("textContent")
        time = spans[2].get_attribute("textContent")

        print("{} {} {}".format(route, frow, time))

Pozostało 580 znaków

2018-11-18 18:53
0

@Arthan: dziękuje bardzo za pomoc sam na pewno nie dałbym sobie rady. Fachowa pomoc. Jak sam coś kleiłem to nie wychodziło bo nie miałem pojęcia o tym, że trzeba poczekać aż komórka będzie widoczna. Dzięki Twojej pomocy projekt ruszył z miejsca od tygodnia :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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