CodeGym /Kurslar /Python SELF AZ /Cədvəllər və siyahılardan məlumatların toplanması

Cədvəllər və siyahılardan məlumatların toplanması

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

1. Cədvəl məlumatlarının çıxarılması

Cədvəllər və soğan arasında nə ortaqdır? Bəli, təbəqələr!

HTML-dəki cədvəllər təbəqəli piroqu xatırladır, hansı ki <table>, <tr> (sətirlər), <th> (başlıq hüceyrələri) və <td> (adi hüceyrələr) elementlərindən ibarətdir. Hər biri bu elementlərdə məlumatların təqdim edilməsində öz rolunu oynayır. Məlumatları çıxarmaq üçün hər təbəqəni ardıcıl şəkildə əldə etməliyik.

Təcrübə, təcrübə və yenə də təcrübə!

Gəlin aşağıdakı sadə HTML cədvəli ilə başlayaq:

HTML
<table>
 <tr>
 <th>Ad</th>
 <th>Yaş</th>
 <th>Şəhər</th>
 </tr>
 <tr>
 <td>Alisa</td>
 <td>29</td>
 <td>Moskva</td>
 </tr>
 <tr>
 <td>Bob</td>
 <td>34</td>
 <td>Sankt-Peterburq</td>
 </tr>
</table>

Adım 1: Səhifədə cədvəlin tapılması

Veb səhifələrdə cədvəllər HTML <table> teqləri ilə müəyyən olunur, və cədvəldəki məlumatlar <tr> (cədvəl sətirləri) və <td> (məlumat hüceyrələri) teqlər daxilində yerləşir. BeautifulSoup-da find metodu səhifədə ilk cədvəli tapmağa kömək edir, find_all isə birdən çox cədvəlin olduğu hallarda onların hamısını əldə etməyə imkan verir.

Python
# Səhifədə ilk cədvəli tapmaq
table = soup.find("table")

Əgər konkret bir cədvəli çıxarmaq lazımdırsa, axtarışı dəqiqləşdirə və cədvəlin atributlarını, məsələn, id və ya class, göstərə bilərik.

Python

# Cədvəli class atributuna görə tapmaq
table = soup.find("table", {"class": "table-class"})

Adım 2: Cədvəldən məlumat çıxarılması

Cədvəl yükləndikdən sonra məlumatları çıxarmağa başlaya bilərik. Məlumatlar cədvəldə sətir-sətir yerləşdiyi üçün düzgün addım hər cədvəl sətirindən keçərək hər bir hücrədən məlumatları çıxarmaq olar.

Başlıqların çıxarılması

Cədvəl başlıqları adətən ilk sətrdə yerləşir və <th> teqlərinə daxil edilir. find_all istifadə edərək bütün başlıqları siyahıya toplaya bilərik.

Python
# Cədvəl başlıqlarının ilk sətrdən çıxarılması
headers = []
header_row = table.find("tr")
for th in header_row.find_all("th"):
headers.append(th.text.strip())

print("Cədvəl başlıqları:", headers)

Məlumat sətirlərinin çıxarılması

Bütün məlumat sətirlərinin çıxarılması üçün (onlar adətən <tr> ilə əhatə olunur, və hər hücrə <td> ilə) iç-içə dövrələrdən (nested loop) istifadə olunur: əvvəlcə bütün <tr> sətirlərini tapırıq, daha sonra hər sətirin <td> hücrələrindən keçirik.

Python

# Bütün məlumat sətirlərinin çıxarılması
data = []
rows = table.find_all("tr")[1:]  # Başlıqları olan ilk sətri atla

for row in rows:
row_data = []
for cell in row.find_all("td"):
row_data.append(cell.text.strip())
data.append(row_data)

print("Cədvəl məlumatları:", data)

Bu kod səliqəli şəkildə cədvəl sətirlərini keçərək hər hücrədən mətn çıxarır. Möcüzə deyilmi? Əlbəttə ki, biz bilirik ki, heç bir möcüzə dövrələrin magiyasız mümkün deyil!

2. Siyahılarla iş

Siyahılar — cədvəllərin böyük qardaşları

Həyatda sadəcə iki sonsuz obyekt var: cədvəllər və siyahılar. Siyahılar <ul> (nömrəsiz) və <ol> (nömrəli) elementləri ilə təqdim olunur, onların elementləri isə <li> olur. Cədvəllərdən fərqli olaraq, siyahılar sadə və minimalistdir. Bu onları məlumatların sürətli və effektiv emalı üçün mükəmməl namizəd edir!

Siyahılardan məlumatların əldə edilməsi

HTML-siyahısına baxırıq:

HTML

<ul>
 <li>Alma</li>
 <li>Banan</li>
 <li>Üzüm</li>
</ul>

İndi bu məlumatları çıxarmaq üçün köhnə dostumuz BeautifulSoup-dan istifadə edirik:

Python

html = """
<ul>
  <li>Alma</li>
  <li>Banan</li>
  <li>Üzüm</li>
</ul>
"""

soup = BeautifulSoup(html, 'html.parser')

ul = soup.find('ul')
items = ul.find_all('li')

for item in items:
    print(item.get_text())

Budur! Sadə, amma effektiv bir yanaşma ki, bunu daha mürəkkəb strukturlara tətbiq edə bilərsiniz.

3. Cədvəl məlumatlarının çıxarılması və işlənməsi nümunəsi

Bilikləri möhkəmləndirmək üçün gəlin məlumatları təcrübədə oxşar bir misaldan çıxarmağa cəhd edək, amma daha mürəkkəb bir struktura malik olsun:

HTML

<table id="courses">
 <tr>
 <th>Kurs</th>
 <th>Təlimçi</th>
 </tr>
 <tr>
 <td>Hər kəs üçün Python</td>
 <td>Guid van Rossum</td>
 </tr>
 <tr>
 <td>Python ilə avtomatlaşdırma</td>
 <td>Erik Mattis</td>
 </tr>
</table>

<ul class="technologies">
 <li>Python</li>
 <li>JavaScript</li>
 <li>HTML & CSS</li>
</ul>

Cədvəl və siyahıdan məlumatları çıxarmaq üçün sorğuları bu şəkildə qurmaq olar:

Python

html = """
<table id="courses">
  <tr>
    <th>Kurs</th>
    <th>Təlimçi</th>
  </tr>
  <tr>
    <td>Hər kəs üçün Python</td>
    <td>Guid van Rossum</td>
  </tr>
  <tr>
    <td>Python ilə avtomatlaşdırma</td>
    <td>Erik Mattis</td>
  </tr>
</table>

<ul class="technologies">
  <li>Python</li>
  <li>JavaScript</li>
  <li>HTML & CSS</li>
</ul>
"""

soup = BeautifulSoup(html, 'html.parser')

# Cədvəldən məlumatların çıxarılması
course_table = soup.find('table', id='courses')
course_rows = course_table.find_all('tr')

for row in course_rows:
    cells = row.find_all(['th', 'td'])
    for cell in cells:
        print(cell.get_text())

print("---")

# Siyahıdan məlumatların çıxarılması
tech_list = soup.find('ul', class_='technologies')
tech_items = tech_list.find_all('li')

for item in tech_items:
    print(item.get_text())

Bu skript hər iki növ məlumatları əhatə edir. Diqqət edin ki, elementləri dəqiq tapmaq üçün identifikatorlardan və siniflərdən necə istifadə edirik. Praktikada daha kompleks HTML strukturları ilə qarşılaşa bilərsiniz, amma yanaşma eyni qalır: ən üst səviyyədən başlayırıq, elementləri analiz edirik və nəhayət, qiymətli məlumatları çıxarırıq!

4. Qismən yekunlar və yayılmış səhvlər

Veb-səhifələrdə cədvəllər və siyahılarla işləmək labirintdə naviqasiya etmək kimidir. Bəzən biz boş hüceyrələr və ya çatışmayan elementlər kimi tamamlanmamış məlumatlarla qarşılaşa bilərik. Belə hallarda məlumatların düzgün və tam olduğunu yoxlamaq vacibdir. Tez-tez edilən səhvlər daxil olmayan elementlərə giriş etməyə cəhd etmək və ya selectorlardan səhv istifadə etməyi əhatə edə bilər. Yadda saxlamaq lazımdır ki, HTML istədiyimiz qədər təmiz və strukturlaşdırılmış olmaya bilər, buna görə də həmişə istisnaların emalı və məlumatların doğruluğunu yoxlamaq vacibdir.

Bu harada faydalıdır?

Bu mühazirədə əldə etdiyiniz biliklər sizə avtomatik olaraq onlayn mənbələrdən məlumat çıxarmaq və emal etməyə kömək edəcək. Məsələn, siz dəyişmə fondu cədvəllərindən məlumatların toplanmasını avtomatlaşdıra, internet mağazalarda qiymətlərin monitorinqini qura və hətta bloglardan və xəbər saytlarından müntəzəm olaraq məlumatların analizini həyata keçirə bilərsiniz. Cədvəllərdən və siyahılardan məlumat çıxarma texnikasına yiyələnmək sizə avtomatlaşdırma və məlumat analizi üçün geniş imkanlar açır.

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