CodeGym /Kursy /Python SELF PL /Automatyzacja przewijania strony i przechodzenia po linka...

Automatyzacja przewijania strony i przechodzenia po linkach

Python SELF PL
Poziom 36 , Lekcja 1
Dostępny

1. Automatyczne przewijanie strony

Wyobraź sobie, że siedzisz na tej strasznej, ale dobrze znanej wielu osobom osi czasu w mediach społecznościowych, gdzie treści leniwie się ładują podczas przewijania. Okazuje się, że to magiczne przewijanie ma swoje API do automatyzacji z Selenium.

Metoda execute_script()

Metoda execute_script() w Selenium pozwala na wykonywanie kodu JavaScript na stronie, i to jest mocne narzędzie, jeśli chodzi o przewijanie. Zobaczmy, jak go użyć do przewijania strony.

Python

from selenium import webdriver
import time

# Inicjalizacja drivera przeglądarki
driver = webdriver.Chrome()

# Otwieramy docelową stronę
driver.get('https://example.com/scrolling_page')

# Przewijamy stronę w dół
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)  # Czekamy, żeby treści mogły się załadować

# Przewijamy stronę w górę (dla urozmaicenia)
driver.execute_script("window.scrollTo(document.body.scrollHeight, 0);")

# Kończymy sesję
driver.quit()

W tym skrypcie używamy window.scrollTo(), żeby przewijać stronę. Argumenty (0, document.body.scrollHeight) wskazują przewijanie od początku do końca strony. To prosta i skuteczna technika, aby upewnić się, że wszystkie dynamiczne elementy są w pełni załadowane.

Dlaczego to ważne?

Korzystanie z execute_script() pozwala załadować treści, które mogą być ukryte na początku, np. przy nieskończonym przewijaniu. Jest to szczególnie przydatne w mediach społecznościowych i na osi czasu wiadomości, gdzie treści są ładowane dynamicznie.

2. Przechodzenie po linkach

Teraz, gdy opanowaliśmy przewijanie, czas na kolejny krok — automatyczne przechodzenie po linkach. To kluczowa umiejętność do zbierania danych, zwłaszcza jeśli informacje są rozproszone na różnych stronach.

Podstawy nawigacji po linkach

Aby kliknąć na link, możemy użyć metody click() na wybranym elemencie. Oto prosty przykład:

Python

from selenium import webdriver

# Inicjalizacja drivera przeglądarki
driver = webdriver.Chrome()

# Otwieramy docelową stronę
driver.get('https://example.com/links_page')

# Znajdujemy link po tekście i klikamy
link = driver.find_element_by_link_text('Next Page')
link.click()

# Kończymy sesję
driver.quit()

W tym przykładzie wyszukujemy link po jego tekście. Ale co, jeśli tekst nie jest unikalny? W takim przypadku można użyć bardziej precyzyjnych metod, takich jak find_element_by_xpath() lub find_element_by_css_selector().

Python

# Wyszukiwanie linka za pomocą XPath
link = driver.find_element_by_xpath('//a[@href="/next_page"]')
link.click()

Zalety automatycznego przechodzenia po linkach

Nawigacja po linkach za pomocą Selenium pozwala zautomatyzować proces zbierania danych ze stron z paginacją lub gdy dane są rozproszone na kilku podstronach witryny. Idealnie nadaje się do przeglądania wyników wyszukiwania lub analizowania katalogu produktów w sklepach internetowych.

3. Łączenie przewijania i przechodzenia

Wyobraź sobie, że musisz przewinąć stronę, aby znaleźć odpowiedni link lub element, a następnie przejść na inną stronę. To proces kombinowany, który można zautomatyzować.

Przykład złożonego skryptu

Python

from selenium import webdriver
import time

# Inicjalizacja drivera przeglądarki
driver = webdriver.Chrome()

# Otwieramy docelową stronę
driver.get('https://example.com/scroll_and_click')

# Przewijamy stronę, aby załadować ukryte elementy
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)

# Znajdujemy i klikamy odpowiedni link
link = driver.find_element_by_xpath('//a[text()="Load More"]')
link.click()

# Kończymy sesję
driver.quit()

Co może pójść nie tak?

Podczas pracy z dynamicznymi stronami zdarza się, że elementy mogą nie zdążyć się załadować lub nie zostają w pełni załadowane. W takich przypadkach warto używać metod oczekiwania, aby upewnić się, że elementy, z którymi chcemy pracować, są już dostępne.

Python

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

# Oczekiwanie aż element będzie klikalny
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//a[text()="Load More"]'))
)
element.click()

Korzystanie z metod oczekiwania pomaga uniknąć błędów spowodowanych niedostępnymi elementami i zapewnia bardziej stabilną pracę skryptu.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION