CodeGym /Kurslar /Python SELF AZ /Vaxt əsaslı avtomatlaşdırma tapşırıqları müntəzəm məlumat...

Vaxt əsaslı avtomatlaşdırma tapşırıqları müntəzəm məlumat yığımı üçün

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

1. Hava API ilə işləmək

Artıq əsasları öyrəndik, indi real bir ssenariyə baxaq. Təsəvvür edin ki, bizə hər 30 dəqiqədə hava barədə məlumat toplamaq lazımdır. Bunun üçün havanın əldə olunması üçün API-dən istifadə edəcəyik. Təbii ki, öyrənmə məqsədləri üçün həqiqi API istifadəsi məhdud ola bilər, ona görə bu vəziyyətin necə görünə biləcəyini təsəvvür edək.

OpenWeather API vasitəsilə cari havanı əldə etmək

Bu misalda requests vasitəsilə xüsusi bir şəhərdəki hava məlumatlarını API OpenWeather-dən necə əldə edəcəyimizi göstəririk.

Python

import schedule
import time
import requests

def fetch_weather(city):
    api_key = "YOUR_API_KEY"  # OpenWeather üçün API açarınızı buraya daxil edin
    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"

    try:
        response = requests.get(url)
        response.raise_for_status()
        data = response.json()
        temperature = data["main"]["temp"]
        weather_description = data["weather"][0]["description"]
        print(f"{city}-də cari temperatur: {temperature}°C")
        print(f"Havanın təsviri: {weather_description}")
    except requests.exceptions.RequestException as e:
        print(f"Hava məlumatlarını alarkən xəta baş verdi: {e}")

def fetch_weather_of_london():
    fetch_weather("London")

# Hər 30 dəqiqədə bir tapşırığın yerinə yetirilməsini tənzimləyin
schedule.every(30).minutes.do(fetch_weather_of_london)

while True:
    schedule.run_pending()
    time.sleep(1)

Burada biz şəhər üçün cari hava məlumatlarını əldə etmək məqsədilə API OpenWeather-ə GET sorğusu göndəririk. JSON cavabında temperaturu və hava təsvirini çıxarırıq və ekrana yazdırırıq. Açarı YOUR_API_KEY öz API açarınızla dəyişməyi unutmayın.

Valyuta məzənnələrinin API ilə əldə olunması

Bu misalda biz API vasitəsilə cari valyuta məzənnələrini almaq üçün requests-dən istifadə edəcəyik.

Python

import schedule
import time
import requests

def fetch_exchange_rate():
    url = "https://api.exchangerate-api.com/v4/latest/USD"
    try:
        response = requests.get(url)
        response.raise_for_status()  # Sorğunun uğurlu yerinə yetirildiyini yoxla
        data = response.json()
        usd_to_eur = data["rates"]["EUR"]
        print(f"USD-dən EUR-a cari məzənnə: {usd_to_eur}")
    except requests.exceptions.RequestException as e:
        print(f"Məlumatları əldə edərkən xəta baş verdi: {e}")

# Hər 10 dəqiqədə bir tapşırığın yerinə yetirilməsini tənzimləyin
schedule.every(10).minutes.do(fetch_exchange_rate)

while True:
    schedule.run_pending()
    time.sleep(1)

Burada biz valyuta məzənnəsi API-ə GET sorğusu göndəririk və JSON formatında məlumat alırıq. USD-dən EUR-a məzənnəni JSON cavabından çıxarırıq və ekrana yazdırırıq. Bu skript digər valyuta cütləri üçün məlumat toplamaq məqsədilə dəyişdirilə bilər, data["rates"]-da açarı dəyişərək.

Bu skript vasitəsilə biz hava məlumatlarını və valyuta məlumatlarını davamlı şəkildə toplaya bilərik. Yaxşı başlanğıc sayılar, elə deyilmi?

Həqiqi istifadə ssenariləri

Məlumatların avtomatik toplanması müxtəlif ssenarilərdə faydalı ola bilər:

  • Serverlərin vəziyyətini monitorinq etmək: Server vəziyyətinin avtomatik yoxlamaları, problemlərin baş vermədən əvvəl müəyyən olunmasına və xəbərdarlıq edilməsinə kömək edə bilər.
  • Sosial şəbəkələrdən məlumat toplamaq: Trendlərin və marka haqqında qeyd edilmələrin davamlı analizi.
  • Valyuta məzənnələrinin izlənməsi: Valyuta məzənnəsindəki dəyişikliklər iş və ya şəxsi ehtiyaclar üçün faydalı ola bilər.

2. Veb məlumatlarının avtomatlaşdırılmış toplanmasına misal

Əgər biz veb-səhifədən məlumat toplamaq istəyiriksə nə etməli? Məsələn, xəbər başlıqlarını müntəzəm olaraq yoxlamaq istəyirik. Bunun üçün bizə BeautifulSouprequests kömək edəcək.

Veb-səhifədən məlumatların toplanması

Tutaq ki, biz xəbər başlıqlarını toplamaq istədiyimiz bir saytımız var. Bunu belə edə bilərik:

Python

import requests
from bs4 import BeautifulSoup

def fetch_news():
    response = requests.get("http://example.com/news")
    soup = BeautifulSoup(response.content, 'html.parser')
    for headline in soup.find_all('h2', class_='news'):
        print(headline.text)

schedule.every().hour.do(fetch_news)

while True:
    schedule.run_pending()
    time.sleep(1)

Bu nümunədə hər 60 dəqiqədən bir skriptimiz veb-səhifəni yoxlayacaq və xəbər başlıqlarını çıxaracaq. Bu, aktual məlumatların alınması prosesini sadələşdirir.

Veb-saytdan xəbər başlıqlarının toplanması

Bu nümunədə biz requests ilə HTML səhifəsini yükləyəcəyik və BeautifulSoup ilə xəbər başlıqlarını parse edəcəyik.

Python

import requests
from bs4 import BeautifulSoup

def fetch_news_headlines():
    url = "https://www.bbc.com/news"
    try:
        response = requests.get(url)
        response.raise_for_status()
        soup = BeautifulSoup(response.text, 'html.parser')
        
        headlines = soup.find_all('h3')  # Bütün <h3> teqlərini axtarırıq (adətən burada başlıqlar olur)
        print("BBC-də son xəbərin başlıqları:")
        for headline in headlines[:5]:  # İlk 5 başlığı götürürük
            print("-", headline.get_text(strip=True))
    except requests.exceptions.RequestException as e:
        print(f"Məlumat əldə edərkən xəta baş verdi: {e}")

fetch_news_headlines()

Burada biz BBC News səhifəsini yükləyib BeautifulSoup vasitəsilə bütün <h3> teqləri tapırıq, harada ki xəbər başlıqları var. İlk 5 başlığı çıxarırıq və artıq boşluqları və simvolları çıxarmaq üçün strip=True istifadə edirik.

İnternet-mağazadan məhsul qiymətlərinin toplanması

Bu nümunə, internet-mağaza (məsələn, Amazon və ya digər bir mağazadan) məhsul qiymətlərinin necə çıxarılacağını göstərir. requests ilə səhifə sorğusu göndərir və BeautifulSoup vasitəsilə qiymətləri parse edirik.

Python

import requests
from bs4 import BeautifulSoup

def fetch_product_price(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36"
    }
    try:
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        
        soup = BeautifulSoup(response.text, 'html.parser')
        product_name = soup.find('span', {'id': 'productTitle'}).get_text(strip=True)
        price = soup.find('span', {'class': 'a-price-whole'}).get_text(strip=True)
        
        print(f"Məhsul: {product_name}")
        print(f"Qiymət: {price} AZN")
    except requests.exceptions.RequestException as e:
        print(f"Məlumat əldə edərkən xəta baş verdi: {e}")
    except AttributeError:
        print("Məhsul və ya qiymət ilə bağlı məlumat tapılmadı")

# Məhsul üçün link nümunəsi
fetch_product_price("https://www.amazon.com/dp/B08N5WRWNW")

Bu nümunədə biz User-Agent başlığı ilə GET-sorğu göndəririk ki, bloklanmadan yayınaq. Daha sonra, istifadə edərək BeautifulSoup, biz id="productTitle" ilə məhsul adını və a-price-whole sinifinə görə məhsul qiymətini tapırıq. Boşluqları çıxarmaq üçün strip=True istifadə olunur.

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