URL ni avtomatik topish

Agar biz URL’larni avtomatik ravishda topmoqchi bo‘lsak, saytdagi HTML tarkibini skanerlash va undagi barcha havolalarni ajratib olishimiz kerak bo‘ladi. Buning uchun Python’da requests kutubxonasi orqali saytga so‘rov yuborish va BeautifulSoup kutubxonasi yordamida HTML tarkibini tahlil qilish mumkin.

Quyida URL’larni avtomatik ravishda sayt ichidagi barcha havolalarni topish va ularni tahlil qilish bo‘yicha loyiha misoli keltirilgan.

1 Zarur Kutubxonalarni O‘rnatish

Birinchi navbatda, requests va BeautifulSoup kutubxonalarini o‘rnatamiz:

pip install requests beautifulsoup4

URL’larni Topish, Tahlil Qilish va Filtrlash Loyiha Kodu

Bu kodning asosiy vazifasi:

  1. Saytga so‘rov yuborib HTML tarkibini olish.

  2. HTML ichidagi barcha havolalarni (<a href="...">) topish.

  3. Har bir topilgan URL’ni tahlil qilish va kerakli qismlarni ajratib olish.

To‘liq Kod

import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, urljoin
import re

def fetch_html(url):
    """
    Berilgan URL dan HTML ma'lumotini yuklab olish.
    """
    try:
        response = requests.get(url)
        response.raise_for_status()
        return response.text
    except requests.RequestException as e:
        print(f"URL'ni yuklashda xatolik: {e}")
        return None

def find_all_urls(base_url, html):
    """
    HTML tarkibidan barcha URL'larni topish va to'liq URL ko'rinishiga keltirish.
    """
    soup = BeautifulSoup(html, "html.parser")
    urls = set()  # Takrorlanmas URL'lar uchun to'plam

    for link in soup.find_all("a", href=True):
        href = link["href"]
        full_url = urljoin(base_url, href)  # To'liq URL ni yaratish
        urls.add(full_url)

    return urls

def parse_url(url):
    """
    URL'ning asosiy qismlarini ajratish.
    """
    parsed_url = urlparse(url)
    print("Protokol:", parsed_url.scheme)
    print("Domen:", parsed_url.netloc)
    print("Yo'l:", parsed_url.path)
    print("Parametrlar:", parsed_url.query)
    print("Fragment:", parsed_url.fragment)

def filter_urls(urls, keyword):
    """
    URL ro'yxatidan kalit so'z orqali filtrlash.
    """
    filtered_urls = [url for url in urls if keyword in url]
    print("Filtrlangan URL'lar:", filtered_urls)
    return filtered_urls

def main():
    base_url = "https://example.com"  # Asosiy sayt URL
    html = fetch_html(base_url)

    if html:
        print("\n--- Barcha topilgan URL'lar ---")
        urls = find_all_urls(base_url, html)
        for url in urls:
            print(url)

        print("\n--- Har bir URL'ni tahlil qilish ---")
        for url in urls:
            parse_url(url)
        
        print("\n--- URL'larni 'example' kalit so'zi bo'yicha filtrlash ---")
        filter_urls(urls, "example")

# Loyihani ishga tushirish
main()

Kod Tushuntirishi

  1. fetch_html funksiyasi:

    • Berilgan base_url orqali HTML ma'lumotni yuklaydi.

    • requests.get(url) yordamida saytga so‘rov yuboradi.

    • Agar xatolik yuz bersa, RequestException orqali xato haqida xabar chiqaradi.

    pythonCopy codehtml = fetch_html("https://example.com")
  2. find_all_urls funksiyasi:

    • BeautifulSoup yordamida HTML tarkibini tahlil qiladi.

    • Sahifadagi barcha <a href="..."> teglarini topadi.

    • Har bir href qiymatini to‘liq URL'ga aylantirish uchun urljoin funksiyasidan foydalanadi.

    • Takrorlanmas URL'larni saqlash uchun set() to‘plamiga qo‘shadi va natijani qaytaradi.

    urls = find_all_urls(base_url, html)
  3. parse_url funksiyasi:

    • urlparse yordamida har bir URL'ni tarkibiy qismlarga ajratadi:

      • Protokol (masalan, http yoki https)

      • Domen (masalan, example.com)

      • Yo‘l (masalan, /about)

      • Parametrlar (masalan, ?id=123)

      • Fragment (masalan, #section1)

    parse_url("https://example.com/path/to/page?name=John#section1")
  4. filter_urls funksiyasi:

    • URL'larni berilgan keyword bilan filtrlash uchun ishlatiladi.

    • urls ro‘yxatidan keyword qiymatini o‘z ichiga olgan URL'larni filtered_urls ro‘yxatiga ajratib, natijani qaytaradi.

    filter_urls(urls, "example")
  5. main funksiyasi:

    • Asosiy funksiya bo‘lib, barcha yordamchi funksiyalarni ketma-ket chaqiradi.

    • Dasturda HTML ma’lumotlarni yuklaydi, URL'larni topadi va ularni tahlil qiladi.

    • Tahlildan so‘ng URL’larni filtrlaydi.

Ishga Tushirish:

main()

Ushbu loyiha quyidagi amallarni bajaradi:

  1. Saytning HTML tarkibini yuklaydi va barcha havolalarni (<a href="...">) topadi.

  2. Topilgan barcha URL’larni to‘liq URL’ga aylantiradi.

  3. Har bir URL'ni protokol, domen, yo‘l, parametr va fragment bo‘yicha tahlil qiladi.

  4. URL’larni berilgan kalit so‘z bo‘yicha filtrlab, faqat kerakli URL’larni ajratib oladi.

Natija

Bu dastur ishga tushirilgandan so‘ng, veb-sahifadagi barcha havolalarni topadi va ularni tahlil qiladi. Masalan, sayt ichidagi URL lar to‘liq ko‘rinishda chiqariladi va example kalit so‘zi mavjud URL'lar filtrlanadi.

Bunday dastur yordamida URL’larni topish, ularni qayta ishlash va analiz qilish amaliyotlarini osonlashtirish mumkin.

Last updated