1. HTML sənədlərin yüklənməsi və parsinqi
Qısa funksionallıq təqdimatı
requests
kitabxanası bizim "mesaj göndərənimizdir", o veb səhifələrin HTML kodlarını gətirmək üçün yola düşür. O HTTP sorğuları edir və səhifələri, sanki pizzanın çatdırılması kimi, gətirir. Amma "Margarita" və ya qutuları gözləməyin :)
BeautifulSoup
isə bizim " aşpazımızdır", o əldə edilmiş HTML-ni asanlıqla tərkib hissələrə (taglər, atributlar və mətnlər) ayırır ki, biz onlardan istifadə edə bilək. O bizə lazım olan elementləri tapmağa və bütün vacib məlumatları saxlamağa kömək edəcək.
requests kitabxanasının istifadəsi
İndi ilk HTTP sorğumuzu etmək və bir səhifənin HTML kodunu əldə etmək üçün hazırıq. Təcrübə üçün example.com
səhifəsini yükləyək. Bu sayt internetin gerçək bir dinozavrıdır və başlanğıc üçün ideal seçimdir.
import requests
url = 'http://example.com'
response = requests.get(url)
# Hər şeyin qaydasında olduğunu yoxlayaq
if response.status_code == 200:
print("Səhifə uğurla yükləndi!")
else:
print("Nəsə düzgün getmədi. Xəta kodu:", response.status_code)
Bu proqram URL-yə sorğu göndərəcək və cavaba əsasən müvəffəqiyyət və ya xətanı göstərəcək. Əgər hər şey qaydasındadırsa, bizdə səhifənin HTML kodu mətn şəklində olacaq.
Xəta kodlarını izləmək
Əgər siz parsinqi avtomatlaşdıracaqsınızsa, o zaman tez-tez elə bir səhifəyə rast gələcəksiniz ki, yüklənməli olduğu halda yüklənmir. Beləliklə, xəta kodlarını analiz etmək - bir neçə səhifədən çox parsinq edən layihənin vacib hissəsidir.
Məsələ ondadır ki, sayt sahibləri onların məlumatlarını parsinq etməyi sevmirlər. Əvvəla, bu sayt üçün yükdür (eyni anda minlərlə səhifə parsinq edəndə). İkincisi, bu onların məlumatlarıdır və onlar bunlardan pul qazanır. Parsinqə müqavimət göstərmək üçün çox üsullar var: CAPTCHA, CloudFlare və s.
Biznes üçün ideal hal odur ki, sən rəqiblərinin hamısını parsinq edə biləsən, amma heç kim səni edə bilməsin. Sanki soyuq müharibə kimi.
HTML parsinqi üçün BeautifulSoup istifadə etmək
HTML kodunu aldıqdan sonra ona BeautifulSoup
ilə baxmağa başlaya bilərik. Bu, kitabı açıb onun məzmununu oxumağa bənzəyir:
from bs4 import BeautifulSoup
# HTML kod məzmununu BeautifulSoup-a ötürürük
soup = BeautifulSoup(response.text, 'html.parser')
# İçəridə nə olduğunu yoxlayaq
print(soup.prettify())
prettify()
metodu HTML kodunu gözəl formatda təqdim edir ki, siz onu öyrənə biləsiniz. Növbəti dərsdə, biz bu HTML-də qum qutusunda oynayan uşaqlar kimi qazmağa başlayacağıq. Evə yorğun, kirli, amma xoşbəxt qayıdacağıq :)
3. Praktika: HTML yüklənməsi və analizi
Anlayışı möhkəmləndirmək üçün praktik bir məşq edək. Gəlin example.com
səhifəsinin başlığını və təsvirini çıxarmağa çalışaq. Bunu etmək üçün HTML haqqında biliklərimizdən və yeni BeautifulSoup biliklərimizdən istifadə edəcəyik.
Məlumatların çıxarılması
# Səhifənin başlığını çıxarmaq
title = soup.title.string
print("Səhifənin başlığı:", title)
# Əsas başlıq (h1) çıxarmaq
main_heading = soup.h1.string
print("Əsas başlıq:", main_heading)
# Paraqrafın mətn məzmununun çıxarılması
paragraph = soup.find('p').text
print("Birinci paraqraf:", paragraph)
Bu nümunədə biz səhifədən lazım olan məlumat parçalarını çıxarmaq üçün title
, h1
atributlarından və find()
metodundan istifadə edirik. Biz cinayət yerində dəlilləri araşdıran kiber-təhqiqatçılara çevrilirik!
4. Tipik səhvlər
Çox güman ki, veb-skreypinglə işləyərkən tipik səhvlərlə qarşılaşacaqsınız, bunlara HTTP-sorğuların yanlış işlənməsi, məlumatların düzgün çıxarılmaması və ya HTML parsing zamanı səhvlər daxil ola bilər. Dayanıqlı və etibarlı skriptlərin hazırlanması səbr və təcrübə tələb edir. Məsələn, həmişə vəziyyət kodunu (response.status_code
) yoxlayın ki, sorğunuzun uğurla icra olunduğuna əmin olun. find()
və find_all()
metodlarından düzgün istifadə etməmək səhvlərə səbəb ola bilər, əgər HTML səhifələrinin strukturunu nəzərə almasanız. Parsingə başlamazdan əvvəl həmişə HTML-i analiz edin.
Veb-skreypingin bir çox praktiki tətbiqləri var: analitik məlumatların toplanmasından başlayaraq məhsul qiymətlərinin avtomatik monitorinqinə qədər. Bu biliklər müsahibələrdə faydalı ola bilər, harada layihə kodunun nümunələri haqqında soruşula bilər. Real praktikada, məsələn, marketoloqlar rəqiblərin qiymətlərini izləmək üçün skreypingdən istifadə edirlər, inkişaf etdiricilər isə - xarici saytlarla inteqrasiya üçün.
Əgər xəbər yığma və analitik sistemlər üçün məlumatların işlənməsi haqqında düşünürsünüzsə, veb-skreyping bilikləriniz işə yarayacaq. Rutini işləri avtomatlaşdıraraq, müxtəlif mənbələrdən məlumatları özləri toplayan skriptlər yarada bilərsiniz. Gəlin virtual tətbiqimizi inkişaf etdirək və özümüzü əsl veb master kimi hiss edək!
GO TO FULL VERSION