Python yordamida Veb-sayt Strukturasi va Yo‘llarini Skanerlash
Veb-sayt strukturasini tahlil qilish foydalanuvchiga sayt ichidagi sahifalarni avtomatik tarzda o‘rganish imkonini beradi. Bu amaliyot orqali veb-saytning sahifalararo bog‘liqligini ko‘rish, ichki yo‘llarni topish va kerakli resurslarni o‘rganish mumkin. Python yordamida bu ishni avtomatlashtirish uchun requests
va BeautifulSoup
kutubxonalaridan foydalanamiz.
1 Kerakli Kutubxonalarni O‘rnatish
Loyihamizda requests
va BeautifulSoup
kutubxonalaridan foydalanamiz. Ularni quyidagi buyruqlar orqali o‘rnating:
Loyiha Struktura Skanerlash Kodu
Ushbu loyiha veb-saytni strukturasi bo‘ylab skanerlash, ichki yo‘llarni topish va ularni qayta ishlash imkoniyatini beradi. Bu loyiha quyidagi amaliyotlarni o‘z ichiga oladi:
Saytga so‘rov yuborish va HTML tarkibini yuklash.
Sahifadagi barcha havolalarni topish va to‘liq URL'ga aylantirish.
Ichki havolalarni chuqurroq o‘rganish uchun ularni qayta skanerlash.
Sahifa yo‘nalishini va asosiy qismlarini tahlil qilish.
2 To‘liq Kod va Funksiyalar
Quyida saytni skanerlash uchun kodning to‘liq ko‘rinishi keltirilgan. Har bir funksiya alohida tushuntirilgan.
Funksiya Tushuntirishi
Har bir funksiya aniq vazifani bajaradi va saytni avtomatik tarzda o‘rganish imkonini beradi.
1 fetch_html
Funksiyasi
fetch_html
FunksiyasiUshbu funksiya veb-sahifadan HTML tarkibini yuklaydi.
requests.get(url)
– URL manzilga so‘rov yuboradi va javobniresponse
o‘zgaruvchisiga saqlaydi.response.raise_for_status()
– Agar HTTP so‘rovda xato bo‘lsa, xatolik haqida xabar chiqaradi.response.text
– Sahifaning HTML matnini qaytaradi.
Sinov:
2 find_internal_links
Funksiyasi
find_internal_links
FunksiyasiBu funksiya berilgan HTML tarkibidan sayt ichidagi barcha havolalarni topadi va to‘liq URL'ga aylantiradi.
soup.find_all("a", href=True)
– Sahifadagi barchahref
atributiga ega<a>
teglarini topadi.urljoin(base_url, href)
– Agarhref
nisbiy URL bo‘lsa, uni to‘liq URL'ga aylantiradi.urlparse(full_url).netloc == urlparse(base_url).netloc
– Ichki havolalarni filtrlab olish uchun asosiy domenni tekshiradi.
Sinov:
3 parse_url
Funksiyasi
parse_url
FunksiyasiBu funksiya URL’ning asosiy qismlarini (protokol, domen, yo‘l va boshqalar) ajratadi va ular haqida ma’lumot chiqaradi.
urlparse(url)
– URL'ni protokol, domen, yo‘l va boshqa qismlarga ajratadi.parsed_url.scheme
– URL protokolini qaytaradi.parsed_url.netloc
– Domen nomini qaytaradi.parsed_url.path
– Yo‘lni chiqaradi.
Sinov:
4 crawl_site
Funksiyasi
crawl_site
FunksiyasiBu funksiya saytni ma’lum chuqurlikda skanerlash uchun ishlatiladi. U ichki yo‘llarni ketma-ket o‘rganib, har bir havolaga alohida kiradi.
visited
– Takroriy tashriflarni oldini olish uchun tashrif buyurilgan URL'larni saqlaydi.to_visit
– Tashrif buyurilmagan URL'lar ro‘yxati, unda URL va chuqurlik darajasi saqlanadi.if depth > max_depth
– Maksimal chuqurlikdan oshmaslik uchun cheklov qo‘yadi.find_internal_links
– HTML tarkibidan barcha ichki havolalarni topadi vato_visit
ro‘yxatiga qo‘shadi.
Sinov:
Loyihani Ishga Tushirish
Quyidagi kodni ishga tushirganingizda saytning ichki havolalari skanerlash va har bir havola tahlil qilinadi:
Loyihaning Ishlash Jarayoni:
Asosiy sahifadan HTML tarkibini yuklaydi va barcha ichki havolalarni topadi.
Har bir topilgan ichki havolani skanerlashda davom etadi, ularni qayta tahlil qiladi va ichki havolalarni chuqurroq o‘rganadi.
Barcha URL’larni qisman tahlil qilish orqali sayt strukturasini to‘liq aniqlaydi.
Bu loyiha sayt ichidagi yo‘llarni skanerlash va ularning strukturasi bo‘yicha tahlil qilish uchun asosiy imkoniyatlarni beradi. Bu usuldan foydalangan holda siz saytda ichki yo‘llarni o‘rganib, kerakli ma’lumotlarni yig‘ishingiz mumkin.
Last updated