CodeGym /Kurslar /Python SELF AZ /XPath və CSS-selektorlarına giriş

XPath və CSS-selektorlarına giriş

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. XPath və CSS-selektorları nədir?

Bu gün Selenium ilə veb-avtomatizasiyada ustalıq yolunda böyük bir addım atacağıq və XPath və CSS-selektorları ilə tanış olacağıq. Bu kiçik, amma güclü alətlər sizin veb-səhifələrdə elementləri axtarmada sadiq yoldaşınız olacaq. Gəlin birlikdə selektorların dünyasına dərinləşək və onları daha dəqiq və effektiv axtarış üçün istifadə etməyi öyrənək.

Əgər HTML sənədi qalın bir meşə olsaydı, o zaman XPath və CSS-selektorları sizin xəritə-yaddaşınız olardı. Bu vasitələr sizə lazım olan ağaca (və ya proqramlaşdırma sevənlər üçün elementə) yol açmağa imkan verir. Bu alətlər veb-səhifələrdə hətta kod dərinliklərində və milyonlarla tag arasında gizlənmiş elementləri tapmağa kömək edir.

XPath

XPath (XML Path Language) — XML sənədlərində naviqasiya üçün nəzərdə tutulan dildir. Amma kim deyib ki, HTML XML-in hibridi deyil? Məhz buna görə də XPath HTML sənədlərdə tətbiq üçün çox rahatdır. O, sizin təyin etdiyiniz hər hansı bir yol ilə elementə çatmağı bacarır.

CSS-selektorları

CSS-selektorları kaskad stil cədvəlləri dünyasından gəlir. Narahat olmayın, onları öyrənmək üçün dizayner olmağınıza ehtiyac yoxdur! Onlar elementləri tiplərinə, siniflərinə, identifikatorlarına və hətta vəziyyətlərinə görə dəqiq seçməyə imkan verir. Onlardan istifadə etmək düşündüyünüzdən daha sadədir — bəlkə də siz artıq veb-səhifələrin stilizasiyasını edərkən onları bilmədən istifadə etmisiniz.

2. XPath və CSS-selektorlarının kodda tətbiqi

İndi siz artıq selektorların nə olduğunu bilirsiniz, gəlin birbaşa praktika edək. Biz onların Selenium vasitəsilə necə tətbiq edildiyini öyrənəcəyik və möcüzələr yaradacağıq!

XPath-dan istifadə

Selenium-da element tapmaq üçün XPath-dan necə istifadə edə biləcəyinizi göstərən bir nümunə:

Python

from selenium import webdriver

# Driverin qurulması
driver = webdriver.Chrome()

# Səhifənin açılması
driver.get('https://example.com')

# XPath vasitəsilə elementin tapılması
element = driver.find_element_by_xpath('//div[@id="menu"]/ul/li/a')

# Elementin mətninin çıxarılması
print(element.text)

# Brauzerin bağlanması
driver.quit()

İzahlar:

  • //div[@id="menu"]/ul/li/a — bu bizim XPath-dır. Bu deməkdir: "Hey, driver, mənə a elementini tap, o li-nin içindədir, o da ul-nin içindədir, o isə div-dədir və id="menu"-yə malikdir."

CSS-selektorların istifadəsi

İndi isə CSS-selektorların necə istifadə edilə biləcəyinə baxaq:

Python

from selenium import webdriver

# Driverin qurulması
driver = webdriver.Chrome()

# Səhifənin açılması
driver.get('https://example.com')

# CSS-selektor vasitəsilə elementin tapılması
element = driver.find_element_by_css_selector('div#menu > ul > li > a')

# Elementin mətninin çıxarılması
print(element.text)

# Brauzerin bağlanması
driver.quit()

İzahlar:

  • div#menu > ul > li > a — bu bizim CSS-selektorumuzdur. O, elementləri XPath ilə oxşar şəkildə tapır, lakin daha qısa sintaksisə malikdir.

3. XPath və CSS-selektorları arasındakı fərqlər

Soruşacaqsınız ki, XPath ilə CSS-selektorları arasında fərq nədir? Əla sualdır! Gəlin hansı hallarda hansını istifadə etməli olduğumuzu aydınlaşdıraq.

Esneklik vs. Sadəlik

XPath daha çevikdir: onun köməyi ilə DOM ağacı "yuxarı" hərəkət etmək və kompleks məntiqi şərtlərdən istifadə etmək mümkündür. Bu isə daha mürəkkəb sorğular üçün faydalıdır. Amma bəzi hallarda CSS-selektorlarının sadəliyi və qısalığı onları üstün edir. CSS-selektorları oxumaq və yazmaq daha asandır, xüsusilə bir elementi class və ya id ilə tapmaq lazım olanda.

Funksiyaların dəstəyi

XPath funksiyalardan istifadəni dəstəkləyir — mətni yoxlamaqdan tutmuş atributlarla işə kimi, məsələn, contains() və ya starts-with() kimi. CSS-selektorları isə belə kompleks dəstəklə təmin olunmayıb.

İcra sürəti

Bəzi ssenarilərdə CSS-selektorları daha sürətli işləyir. Bunun səbəbi brauzerlərin əvvəlcədən CSS-selektorları ilə iş üçün optimallaşdırılmasıdır, bu isə onları sadə tapşırıqlar üçün ilkin seçim edir.

Sintaksis

XPath daha mürəkkəb sintaksisə malikdir ki, bu həm üstünlük, həm də çatışmazlıq ola bilər. CSS-selektorları yazmaq və öyrənmək daha sadədir.

4. Praktikada Tətbiq

Gəlin bu bilikləri real tapşırıqda tətbiq edək. Deyək ki, bizdə məhsulların cədvəli olan bir veb-səhifə var və bütün məhsul adlarını və onların qiymətlərini toplamalıyıq. Bunu necə etmək olar:

XPath istifadəsi ilə nümunə

Python

from selenium import webdriver

# Driver quraşdırılması
driver = webdriver.Chrome()

# Səhifənin açılması
driver.get('https://example.com/products')

# Bütün məhsul elementlərini tapmaq
products = driver.find_elements_by_xpath('//table[@class="product-table"]/tbody/tr')

# Hər bir məhsul haqqında məlumatların çıxarılması
for product in products:
    name = product.find_element_by_xpath('.//td[@class="product-name"]').text
    price = product.find_element_by_xpath('.//td[@class="product-price"]').text
    print(f"Məhsul: {name}, Qiymət: {price}")

# Brauzerin bağlanması
driver.quit()

CSS-selektorlarından istifadəyə dair nümunə

Python

from selenium import webdriver

# Driver quraşdırılması
driver = webdriver.Chrome()

# Səhifənin açılması
driver.get('https://example.com/products')

# Bütün məhsul elementlərini tapmaq
products = driver.find_elements_by_css_selector('table.product-table > tbody > tr')

# Hər bir məhsul haqqında məlumatların çıxarılması
for product in products:
    name = product.find_element_by_css_selector('td.product-name').text
    price = product.find_element_by_css_selector('td.product-price').text
    print(f"Məhsul: {name}, Qiymət: {price}")

# Brauzerin bağlanması
driver.quit()

5. Xüsusiyyətlər və tipik səhvlər

XPath və CSS-selektorlardan istifadə edərkən qarşılaşa biləcəyiniz bir neçə tələ var. Məsələn, XPath-də mütləq yollar istifadə etdiyiniz zaman, HTML strukturundakı ən kiçik dəyişiklik skriptinizi poza bilər. Buna görə də həmişə nisbi yolları istifadə etməyə çalışın, elastik qalasınız.

Digər tərəfdən, CSS-selektorlar çox mürəkkəbləşəndə oxunmaz ola bilər, buna görə də dəqiqlik və sadəlik arasında balans tapmaq vacibdir.

Həmçinin səhvlərin emalından bəhs etmək lazımdır. Əgər element tapılmazsa, Selenium NoSuchElementException atacaq. Bunun öhdəsindən gəlmək üçün try-except bloklarından və ya WebDriverWait kimi gözləmə metodlarından istifadə edin, skriptlərinizi daha etibarlı edin.

1
Опрос
Selenium ilə Tanışlıq,  35 уровень,  4 лекция
недоступен
Selenium ilə Tanışlıq
Selenium ilə Tanışlıq
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION