1. Səhifənin avtomatik sürüşdürülməsi
Təsəvvür edin ki, sosial şəbəkələrdə o qorxunc, amma çoxlarına tanış olan lenti gəzirsiniz, burada məzmun tədricən sürüşdürmə ilə yüklənir. Görünür, bu sehrli sürüşdürmənin Selenium ilə avtomatlaşdırılması üçün API-si var.
execute_script()
metodu
Selenium-da execute_script()
metodu səhifədə JavaScript kodunu icra etməyə imkan verir və bu, səhifəni sürüşdürmək məsələsinə gəldikdə, çox güclü bir vasitədir. Gəlin səhifəni sürüşdürmək üçün necə istifadə olunduğunu araşdıraq.
from selenium import webdriver
import time
# Brauzer driver-inin inicializasiyası
driver = webdriver.Chrome()
# Məqsəd səhifəsini açırıq
driver.get('https://example.com/scrolling_page')
# Səhifəni aşağı sürüşdürürük
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3) # Məzmunun yüklənməsi üçün gözləyirik
# Səhifəni yuxarı sürüşdürürük (dəyişiklik üçün)
driver.execute_script("window.scrollTo(document.body.scrollHeight, 0);")
# Sessiyanı tamamlayırıq
driver.quit()
Bu skriptdə biz səhifəni sürüşdürmək üçün window.scrollTo()
istifadə edirik. (0, document.body.scrollHeight)
arqumentləri səhifənin əvvəlindən sonuna qədər sürüşdürmə deməkdir. Bu, dinamik elementlərin hamısının tam yüklənməsinə təmin etmək üçün sadə və effektiv bir metoddur.
Niyə bu vacibdir?
Səhifəni sürüşdürmək üçün execute_script()
istifadə etmək, əvvəlcə gizli ola bilən məzmunu yükləmək imkanı verir, məsələn, sonsuz sürüşdürmədə. Bu, xüsusilə sosial şəbəkələr və xəbər lentləri üçün faydalıdır, burada məzmun dinamik şəkildə yüklənir.
2. Keçidlərə klikləmə
İndi isə skroll etməni keçdik, növbəti tapşırığa - keçidlərə avtomatik keçməyə baxacağıq. Bu, məlumat toplamaq üçün əsas bacarıqlardandır, xüsusən də məlumat müxtəlif səhifələrə səpələnibsə.
Keçidlərə klikləmənin əsasları
Keçidlərə klik etmək üçün seçilmiş element üzərindəki click()
metodundan istifadə edə bilərik. Gəlin sadə bir nümunəyə baxaq:
from selenium import webdriver
# Brauzer driver-inin initiasiyası
driver = webdriver.Chrome()
# Məqsəd səhifəsini açırıq
driver.get('https://example.com/links_page')
# Keçidi mətninə görə tapırıq və klik edirik
link = driver.find_element_by_link_text('Next Page')
link.click()
# Sessiyanı bitiririk
driver.quit()
Bu nümunədə biz keçidi mətninə görə tapırıq. Amma əgər mətn unikal deyilsə? Belə halda daha dəqiq metodlardan istifadə edə bilərik, məsələn find_element_by_xpath()
və ya find_element_by_css_selector()
.
# XPath ilə keçidi tapmaq
link = driver.find_element_by_xpath('//a[@href="/next_page"]')
link.click()
Keçidlərə avtomatik klikləmənin üstünlükləri
Selenium istifadə edərək keçidlərə klikləmə, səhifələrdəki məlumatların toplanmasını avtomatlaşdırmağa imkan verir, xüsusən də səhifələrdə pagination varsa və ya məlumat saytın müxtəlif alt bölmələrinə səpələnibsə. Bu xüsusilə axtarış nəticələrini toplamaq və ya online mağaza saytlarında məhsul kataloqlarını nəzərdən keçirmək üçün əladır.
3. Sürüşdürmə və keçidlərin birləşdirilməsi
İndi təsəvvür et ki, sənə lazım olan linki ya elementi tapmaq üçün səhifəni sürüşdürmək lazımdır, sonra isə başqa səhifəyə keçməlisən. Bu, kombinasiya olunmuş bir prosesdir ki, avtomatlaşdırıla bilər.
Kombinasiya olunmuş skript nümunəsi
from selenium import webdriver
import time
# Brauzer driver-inin başladılması
driver = webdriver.Chrome()
# Məqsəd səhifənin açılması
driver.get('https://example.com/scroll_and_click')
# Gizli elementlərin yüklənməsi üçün səhifəni sürüşdürürük
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
# Tələb olunan linki tapırıq və üstünə klik edirik
link = driver.find_element_by_xpath('//a[text()="Load More"]')
link.click()
# Sessiyanı sonlandırırıq
driver.quit()
Nələr səhv gedə bilər?
Dinamik səhifələrlə işləyərkən bəzən elementlər yüklənməyə çatmaya bilər ya da tam yüklənməz. Belə hallarda səbr etmək üçün gözləmə metodlarından istifadə etmək lazım gəlir, elementlərin sizinlə qarşılıqlı əlaqəyə hazır olduğundan əmin olmaq üçün.
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Element klik edilə bilən olana qədər gözləyirik
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//a[text()="Load More"]'))
)
element.click()
Gözləmə metodlarından istifadə etmək, hazırlanmamış elementlər səbəbindən baş verə biləcək səhvlərin qarşısını alır və skriptin daha stabil işləməsini təmin edir.
GO TO FULL VERSION