CodeGym /Kurslar /Python SELF AZ /Selenium vasitəsi ilə mətn və atributların çıxarılması

Selenium vasitəsi ilə mətn və atributların çıxarılması

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

Salam, gələcəyin avtomatlaşdırma ustaları! Bu gün öyrənəcəyik ki, Selenium vasitəsilə veb-səhifədəki mətni və atributları necə çıxarmaq olar. Bu, sizin arsenalınızda güclü bir vasitədir, çünki veb-scraping dünyasında əsas məsələ informasiyanı çıxarmağı bacarmaqdır. İnternetin dərinliklərindən faydalı məlumatları çıxarmağa hazırsınız? Onda başlayaq!

1. Bu mühazirə haqqında nə bilmək olar?

  • Veri çıxarma əsasları: HTML elementlərindən mətnləri necə çıxarmağı öyrənəcəyik, bu da özü-özlüyündə əla bir işdir.
  • Atributların alınması: Belə dadlı elementləri necə çıxarmağı öyrənəcəyik, məsələn, linklər (href) və şəkillər (src), ki daha sonra onlarla inanılmaz işlər görə bilək.
  • Həyatdan nümunələr: Təcrübədə veb-səhifədəki cədvəllərdən və siyahılardan məlumatları çıxarmağa çalışacağıq. Böyük proqramçı demişkən: "Kodu əllərində hiss etmədən tam başa düşmədin".

2. Elementlərdən mətn çıxarma

Beləliklə, təsəvvür edin ki, çoxlu faydalı məlumatla dolu gözəl bir veb-saytınız var. Sizə başlıqlar, paraqraflar və digər HTML elementləri kimi hissələrdən mətni çıxarmaq lazımdır. Necə edəcəyik? Burada Selenium köməyə gəlir.

Nümunə

Python

from selenium import webdriver

# Chrome üçün driver-i tənzimləyirik
driver = webdriver.Chrome()

# Saytı açırıq
driver.get("https://example.com")

# Elementi class adı ilə tapıb mətn çıxarırıq
element = driver.find_element_by_class_name("example-class")
text = element.text
print("Çıxarılan mətn:", text)

# Brauzeri bağlamağı unutmayın
driver.quit()

Burada elementin mətn məzmununu əldə etmək üçün .text metodundan istifadə edirik. Python-dakı bütün istisnaları yadda saxlamaqdan daha asandır, elə deyilmi?

3. Elementlərdən atributların əldə edilməsi

Text — bu əladır, amma əgər daha spesifik bir şey, məsələn, linkin URL-i və ya şəkil linki əldə etmək lazımdırsa nə etməli? Selenium burada da sizi tək buraxmayacaq.

Nümunə

Python

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://example.com")

# CSS selector vasitəsilə elementi tapırıq və 'href' atributunu əldə edirik
link_element = driver.find_element_by_css_selector("a.link-class")
link_href = link_element.get_attribute("href")
print("Linkin URL-i:", link_href)

# ID vasitəsilə elementi tapırıq və 'src' atributunu əldə edirik
img_element = driver.find_element_by_id("logo")
img_src = img_element.get_attribute("src")
print("Şəklin URL-i:", img_src)

driver.quit()

Göründüyü kimi, hər şey eynidir, sadəcə .text yerinə .get_attribute("atribut_adı") metodundan istifadə edirik. Asan öyrəşilən, amma olduqca güclü metodlardır.

4. Metodların praktikada tətbiqi

Nəzəriyyəni bir kənara qoyub praktikaya keçirik, çünki proqramçılar ümumiyyətlə çox uzun müddət abstraksiyada qalmağı sevmirlər. Gəlin veb-səhifədəki bir cədvəldən məlumat çıxarma nümunəsini nəzərdən keçirək.

Cədvəllərdən məlumat çıxarılması

Tutaq ki, bir saytın cədvəlindəki bütün sətirlərini çıxarıb onları konsola yazmalısınız. Bu, necə həyata keçirilə bilər:

Python

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://example.com")

# Cədvəli ID vasitəsilə tapırıq
table = driver.find_element_by_id("example-table")

# Cədvəlin bütün sətirlərini tapırıq
rows = table.find_elements_by_tag_name("tr")

for row in rows:
    # Cari sətirdəki bütün hüceyrələri tapırıq
    cells = row.find_elements_by_tag_name("td")
    for cell in cells:
        print(cell.text, end=' ')
    print()

driver.quit()

Əvvəlcə cədvəlin özünü tapırıq, sonra onun bütün sətirlərini və hüceyrələrini sırayla keçərək onların mətnlərini çıxarıb yazırıq. Bu, mürəkkəb bir şəbəkəni açmağa bənzəyir, amma nəticədə hər şey sadə və anlaşılan olur!

5. Ümumi səhvlər və onlardan necə qaçmaq olar

Kod macərasına başlamazdan əvvəl gəlin qarşılaşa biləcəyimiz ümumi səhvlərdən danışaq.

Dinamiki səhifələrlə işləyərkən zaman sizin düşməniniz ola bilər. Əgər hələ yüklənməmiş elementin mətnini və ya atributunu almağa çalışsanız, NoSuchElementException xətası ilə qarşılaşacaqsınız. Bu, sürpriz gəlməmişdən əvvəl onu tutmağa çalışmaq kimidir. Bunun qarşısını almaq üçün möcüzələrə güvənmək əvəzinə açıq gözləyişlərdən (WebDriverWait) istifadə edin.

Python

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.Chrome()

driver.get("https://example.com")

try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "lazy-class"))
    )
    print(element.text)
finally:
    driver.quit()

Burada biz WebDriverWaitexpected_conditions istifadə edirik ki, elementin yüklənməsini gözləyək. Bu, yeməyin tam hazır olmasını gözləyib sonra onun dadını çıxarmaq kimidir.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION