Note
Loyiha demo holatda
Bu loyiha internet-do'konlaridan narxlarni solishtirish va ularni DRF orqali API holiga keltirish uchun yaratilgan.
Loyihani yaratishda bir nechta internet saytlaridan ma'lumotlarni olish uchun Selenium va BeatifulSoup ishlatildi, bazi saytlardan esa saytning foydalanuvchilar mahsulotni qidirishi uchun ishlatilgan API sidan foydalanildi.
Foydalanilgan saytlar
- asaxiy.uz
- olcha.uz
- zoodmall.uz
- sello.uz
- texnomart.uz
Barcha taklif, savol va ogohlantirishlar uchun telegramdan menga bog'lanishingiz mumkin.
Loyiha test rejimida ishlamoqda, iltimos xatoga duch kelganingizda menga xabar qiling.
Bu loyiha hozir sinov bosqichidan o'tmoqda. Agarda biror xatolikka duchor bo'lsangiz, xatolik haqida xabardor qilishni unutmang.
Loyihani demo holatda https://arzonuz.up.railway.app/search-product/?query=query yoki https://arzon-uz.vercel.app/search-product/?query=query yoki https://arzon-uz.onrender.com/search-product/?query=query ushbu manzillardan biriga query o'rniga mahsulot nomini kiritish orqali ishlatib ko'rish mumkin. Loyiha bepul serverda joylashganligi va resurslar cheklanganligi uchun loyihadan foydalanish kunlik 10 ta so'rov bilan cheklangan.
1-muammo. Internet-do'konlaridan ma'lumotlarni yig'ish uchun mavjud uslublardan eng maqbuluni tanlash
- Situation: Internet-do'konlaridan ma'lumotlarni yig'ish uchun mavjud uslublardan eng maqbuluni tanlash
- Task: Ma'lumotlarni to'plash uchun bir necha usullar mavjud va ularning kamchilik va ustunliklarini taqqoslash kerak
- Action: Buning uchun mavjud usullarni o'rganishni boshladim. Internet saytini scraping qilish uchun ilk usullardan biri selenium, request va BeatifulSoup kutubxonalaridan foydalanish. Selenium afzalligi javascript kutubxonalari bilan hosil qilingan internet saytlaridan ham ma'lumotlarni olish mumkinligi edi lekin selenium loyihaning sekin ishlashiga sabab bo'lishi mumkin, shuni hisobga olgan holda avvalo ma'lumotlarni olmoqchi bo'lgan internet-do'konlaridan yuborilgan so'rovlar qaysi API ga yuborilganligini browserda developer tool orqali kuzatdim. Bu usul orqali asaxiy.uz dan tashqari qolgan internet-do'konlarda foydalanuvchi mahsulot qidirganda ishlatiladigan API manzilini topdim va API kutadigan headerslarni error messagelar orqali aniqlab, har bir sayt uchun sozladim. asaxiy.uz uchun avvaliga seleium bilan scraping qilish yo'llarini tanladim.
- Result: Bu orqali loyihadagi asosiy muammo yechildi va keyingi qadamlar belgilandi
2-muammo. Asaxiy.uz uchun selenium bilan yozilgan funksiya loyiha tezligini sekinlashtirdi
- Situation: Asaxiy.uz uchun selenium orqali yozilgan funksiyalar bepul server internet-tezligi va saytlarning yuklanish uchun kutish vaqtlari uzun bo'lganligi uchun API ga yuborilgan so'rovdan javob kelishi 3-5 daqiqagacha cho'zildi
- Task: Muammoga sabab bo'lgan funksiyani request kutubxonasi bilan o'zgartirish
- Action: Ma'lumotlarni olish uchun selenium orqali qilingan funksiyani, request bilan o'zgartirdim, lekin sayt API siga ruhsat bo'lmaganligi uchun mahsulot qidirish linki orqali mahsulot ma'lumotlarini HTML ko'rinishida olib va ma'lumotlarni BeatifulSoup orqali ajratib oldim
- Result: Funksiya o'zgartirilganidan so'ng serveridan javob kelishi 7-12 (25 barobar) soniyaga qadar tezlashdi, buning natijasida API tezligi sezilarli o'sdi
3-muammo. Saytlarning ichki qidiruv tizimidagi muammolar
- Situation: Internet-do'konlarida qidiruv qilinganida eng arzon mahsulotlar eng boshida chiqadi va bu mening loyihamda kamchiliklarga sabab bo'ldi. Masalan Samsung A54 smartfoni qidirilganda Samsung A54 uchun himoya oynasi takliflari chiqdi
- Task: Muammoga sabab bo'lgan internet-do'kondagi mahsulotlarni API ga qo'shishdan oldin tekshiruv o'tkazish uchun funksiya yozish
- Action: Muammo kelib chiqgan internet-do'kondagi mahsulotlarni API ga qo'shishdan oldin, shu so'rov bo'yicha boshqa do'konlardagi mahsulotlar narxlari orasidan eng arzon mahsulot narxi belgilab olinib va muammoga sabab bo'lgan internet-do'kondagi mahsulot narxi bilan solishtirish va agar narxlar orasidagi farq katta bo'lsa API ma'lumotlariga qo'shmasligini ta'minlovchi tekshiruvchi funksiya yozildi
- Result: Buning natijasida foydalanuvchi mahsulot qidirganida so'rovga taaluqli bo'lgan mahsulotlar chiqishi ta'minlandi, API samaradorligi oshirildi
Loyihani telegram orqali ham https://t.me/arzoni_qayerda_bot ushbu bot orqali ishlatib ko'rishingiz mumkin. Xatoliklar haqida iltimos xabar bering.
RAHMAT