CodeGym /Kurslar /Python SELF AZ /BeautifulSoup ilə işləmək və məlumatları çıxarmaq

BeautifulSoup ilə işləmək və məlumatları çıxarmaq

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

Əgər düşünürsünüzsə ki, veb-səhifələr sadəcə gözəl şəkillər və mətndir, onda mənim sizə xəbərim var: onlar soğanaqlar kimidir — çox qatlıdır və sizi ağlada bilər (şübhəsiz ki, sevincdən!) o vaxt ki, onların nə qədər çox məlumatı əhatə etdiyini biləcəksiniz. Bu gün biz HTML-səhifələrə BeautifulSoup kitabxanası ilə baxış keçirəcəyik. Virtual belinizi götürün — qazmaq vaxtıdır!

1. HTML sənədlərin analizi

Sadə səhifələr

Gəlin bir neçə sadə HTML sənədini analiz edək ki, onların nədən ibarət olduğunu və hansı elementlərin məlumat çıxarılması üçün maraqlı ola biləcəyini anlamaq.

Xəbər səhifəsinin nümunəsi:

HTML

<html>
  <head>
    <title>Xəbərlər</title>
  </head>
  <body>
    <h1>Günün əsas xəbəri</h1>
    <p>Bu gün mühüm bir hadisə baş verdi!</p>
  </body>
</html>

Bu nümunədə h1 məqalənin başlığını, p isə əsas mətnini ehtiva edir.

HTML strukturunun skreypinqə təsiri

BeautifulSoup-dan istifadə etməzdən əvvəl, analiz etmək istədiyiniz HTML sənədinin strukturunu başa düşmək vacibdir. Bu, bizə səhifənin hansı hissələrinin lazım olan məlumatları saxladığını müəyyən etməyə imkan verir. Məsələn, səhifənin başlığını axtarırsınızsa, <h1>-ə baxın, siyahını çıxarmaq istəyirsinizsə, <ul><li>-dən istifadə edin.

Skreypinqə hazırlıq

Məlumat çıxarılmasına başlamazdan əvvəl əsas tag və atributları müəyyənləşdirmək vacibdir. Məsələn, əgər veb-tərtibatçılar məlumatları öz səhifələrində xüsusi olaraq qeyd ediblərsə, məsələn, başlıq üçün class="headline" atributundan istifadə ediblərsə, bu sizə çox kömək edəcək. Brauzerdə developer tools-dan istifadə edərək HTML strukturunu öyrənin. Bunun üçün elementin üzərinə sağ klik edin və "Inspect" seçin (Google Chrome-da).

2. Kitabxanaların yüklənməsi və quraşdırılması

BeautifulSoup və requests-in yüklənməsi

HTML ilə işləmək üçün biz BeautifulSoup kitabxanasından istifadə edəcəyik. Eyni zamanda, bizə HTML səhifələrin yüklənməsi üçün requests lazım olacaq. Yükləmə çox sadədir və sadəcə konsolunuzda bir neçə komanda yazmaq kifayətdir:

Bash

pip install beautifulsoup4 requests

BeautifulSoup ilə requests-in birlikdə işi

Requests bizə veb-səhifədən HTML əldə etməyə imkan verir, BeautifulSoup isə onu parçalayıb analiz etməyə kömək edəcək. Gəlin bunun necə işlədiyinə baxaq:

Python

import requests
from bs4 import BeautifulSoup

# Səhifəni yükləyirik
url = 'https://example.com'
response = requests.get(url)

# Səhifəni BeautifulSoup ilə parse edirik
soup = BeautifulSoup(response.text, 'html.parser')

# Səhifənin başlığını çıxarırıq
title = soup.title.text
print('Başlıq:', title)

3. Tag-larla naviqasiya və məlumatların çıxarılması

Naviqasiya metodları

İndi, elimizdə HTML sənədi olduğu vaxt, biz BeautifulSoup istifadə edərək onun daxilində naviqasiya edə bilərik. Super .select() metodu CSS-selektorlarından istifadə edərək məlumatları çıxartmağa imkan verir.

Tag-larla məlumatların çıxarılması

BeautifulSoup metodlar təqdim edir ki, bu metodlar elementləri onların tag-larına görə tapmağa icazə verir, məsələn findfind_all. Onlar sizə axtardığınız məlumat parçalarını tapmaqda kömək edəcək:

Python

# İlk paraqrafı tapırıq
paragraph = soup.find('p').text
print('İlk paraqraf:', paragraph)

# Siyahının bütün elementlərini tapırıq
list_items = soup.find_all('li')
for item in list_items:
 print('Siyahı elementi:', item.text)

Filtrləmə üçün atributlardan istifadə

Bəzən siz müəyyən şərtlərə uyğun gələn elementləri (məsələn, müəyyən class-a sahib olanları) çıxartmalısınız. BeautifulSoup bunu asanlıqla etməyə icazə verir:

Python

# Müəyyən class-a malik elementi çıxarırıq
headline = soup.find('h1', class_='main-headline').text
print('Başlıq:', headline)

4. CSS-selektorların tətbiqi

CSS-selektorlar nədir?

CSS-selektorlar — Python proqramçısı baxımından güclü vasitədir, xüsusi meyarlara əsasən məlumatların çıxarılmasını təmin edir. Onlar ümumi üslublara malik olan elementləri tapmaq üçün istifadə edilə bilər ki, bu da scraping prosesini daha çevik və dəqiq edir.

BeautifulSoup ilə selektorların istifadəsi

BeautifulSoup, select metodu vasitəsilə CSS-selektorları istifadə etməyə imkan verir. Məsələn:

Python

# Bütün linklərin seçimi
links = soup.select('a')
for link in links:
 print('Link:', link['href'])

Seçimi daha dəqiq etmək üçün selektorları birləşdirə də bilərsiniz. Məsələn, soup.select('div.article h2') bütün div article sinifinə malik olanların içindəki h2-ni seçər.

CSS-selektorlar ilə axtarış nümunələri

Biliklərimizi praktikada tətbiq edək. highlight sinfinə malik olan bütün paraqrafları seçin və onların mətnini çıxarın:

Python

# 'highlight' sinfinə malik olan bütün paraqrafların çıxarılması
highlighted_paragraphs = soup.select('p.highlight')
for para in highlighted_paragraphs:
 print('Seçilmiş paraqraf:', para.text)

Bu qədərlik. İstədiyiniz səviyyəyə çatana qədər scraping bacarıqlarınız üzərində çalışmanı unutmayın. Parsing dünyanın həyəcanverici sərgüzəştində sizə uğurlar!

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