1. Mətn çıxarış metodlarına giriş
Bugün HTML elementlərindən qiymətli mətn məlumatlarını və atributlarını necə çıxaracağımızı öyrənəcəyik. Maçetlərinizi bir kənara atın, çünki BeautifulSoup
ilə işləmək, yalnız payız bağçasında gəzib alma yığmağa bənzərlik təşkil edir. Öyrəndiyiniz biliklərin bəhrəsini toplamağa hazır olun? Hadi başlayaq!
HTML elementlərindən mətn çıxarış metodları bizim siyahımızda birinci yerdədir. Mətnləri çıxarmağa başlamazdan əvvəl səhifəni yükləyək.
import requests
from bs4 import BeautifulSoup
# Səhifənin HTML kodunu yükləyirik
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
İndi bizim soup
obyektimiz var ki, o HTML sənədimizin ağacvari strukturu saxlayır. Hadi hər hansı bir etiket elementindən mətn çıxaraq, məsələn, başlıqdan.
Metod .text
və get_text()
.text
xassəsi və onun analoqu get_text()
metodu elementin (və onun bütün daxilindəki elementlərin) mətn məzmununu əldə etməyə imkan verir.
# İlk tapılmış h1 başlığından mətn çıxarırıq
h1_tag = soup.find('h1')
print(h1_tag.text) # və ya h1_tag.get_text()
Özünüz sınayın: əvvəlki mühazirələrimizdə öyrəndiyimiz axtarış metodlarından istifadə edərək digər elementləri tapın və onların mətnlərini çıxarın. Siz təəccüblənəcəksiniz ki, nə qədər çox məlumat əldə etmək mümkündür!
2. Atributların dəyərlərini çıxarmaq
Mətnlər mətnlərdir, amma bəzən vacib məlumatlar atributlarda gizlənir, elə bil ki, cibdəki sənədlər kimi. Təsəvvür edin ki, sizə linkin ünvanını öyrənmək və ya bir şəkilin URL-ni əldə etmək lazımdır (və məndən bunun nə üçün lazım ola biləcəyini soruşmayın; bəlkə də pişik şəkilləri kolleksiyası yığmaq istəyəcəksiniz).
Atributların dəyərlərini çıxarmaq
Tutaq ki, bizdə bir link element <a href="https://example.com">Example</a>
. href
dəyərini necə çıxara bilərik? Çox asandır.
# Linki çıxarırıq
a_tag = soup.find('a')
link = a_tag['href']
print("Link:", link)
Bu kod href
atributunun dəyərini çıxardı. Digər faydalı atributları da bu şəkildə çıxara bilərsiniz.
Şəkil əldə etməyə çalışırıq
Şəkilin URL-ni çıxarmaq bir o qədər də sadə ola bilər. <img src="image.jpg" alt="Pişik">
vəziyyətinə baxaq.
# Şəklin URL-ni çıxarırıq
img_tag = soup.find('img')
image_url = img_tag['src']
print("Şəklin URL-ni:", image_url)
BeautifulSoup
ilə işin gözəlliyi ondadır ki, o, asanlıqla məlumatları tapmağa və çıxarmağa imkan yaradır, bizi HTML strukturunun necə işlədiyini düşünməyə məcbur etmir.
3. Mətnlərin və atributların çıxarılması nümunələri
Gəlin nümunələrə keçək. Gəlin bir az daha mürəkkəb bir tapşırığı nəzərdən keçirək: səhifədəki bütün linkləri, <a>
taglarının içindəki mətnlərlə birlikdə çıxaraq.
Nümunə: bütün linklərin mətnlə çıxarılması
# Bütün a taglarını tapırıq
a_tags = soup.find_all('a')
# Linki və mətni çıxarırıq
for a_tag in a_tags:
link = a_tag['href']
text = a_tag.get_text()
print(f"Mətn: {text}, Link: {link}")
Gördüyünüz kimi, find_all
metodu axtarış şərtlərinə cavab verən bütün elementləri asanlıqla tapır, for
-dövrü isə onların hər birini gəzməyə imkan verir.
4. Xətaların idarə olunması
Xətaları idarə etməyi unutmayın. Bəzən HTML strukturu sizin gözlədiyiniz kimi olmaya bilər və ya element gözlənilən atributa sahib olmaya bilər. Kodunuzun belə hallarda "çöküb" qalmaması üçün tədbir görün.
# Atribut çıxarılarkən xətanın idarə olunma nümunəsi
try:
link = a_tag['href']
except KeyError:
link = None
print("href atributu tapılmadı!")
Bu, skripti daha dayanıqlı edəcək və o, bir qeyri-müəyyən səhv üzündən dayanmayacaq.
5. Real tətbiq
2019-cu ildə rusiyalı bir təşəbbüskar öz şirkətinin hekayəsini paylaşdı. Şirkəti məlumat toplama üzrə ixtisaslaşmışdı və illik dövriyyəsi 20 milyon rubl olan bir səviyyəyə çatmışdı. O, qeyd etdi ki, avtomatlaşdırılmış məlumat toplama rəqabəti məhdudlaşdırmır, əksinə, bizneslərin bazara uyğunlaşmasına kömək edir.
Məsələn, müştərilərdən biri hər gün tədarükçünün saytındakı məhsul qalığını toplamaq üçün bir parser sifariş etdi. Bu, öz internet-mağazasındakı çeşidləri və qiymətləri operativ şəkildə yeniləməyə imkan verdi. Sahibkar onu da vurğuladı ki, bəzi saytların məlumatların toplanmasını çətinləşdirməyə çalışmasına baxmayaraq, müasir texnologiyalar belə maneələri effektiv şəkildə keçməyə imkan verir və bizneslərə strateji qərarlar qəbul etmək üçün lazımi məlumatlara çıxışı təmin edir.
GO TO FULL VERSION