Web scraping — web sahifalardan dastur orqali ma’lumot olish va uni strukturali ko‘rinishga aylantirish jarayonidir. Oddiy scraper HTTP response HTMLini parse qiladi; JavaScript orqali dinamik yaratilgan kontent uchun browser automation yoki saytning ruxsat etilgan API si kerak bo‘lishi mumkin. Jarayon retrieval, parsing, normalization va saqlash bosqichlarini o‘z ichiga oladi.
Manbani tanlash
Sahifada ko‘ringan ma’lumot ko‘pincha HTML, embedded JSON yoki API response dan keladi. Eng barqaror va ruxsat etilgan strukturali manba tanlanadi. CSS classlar dizayn buildida tez o‘zgarishi mumkin; semantic attribute, table header yoki schema.org metadata barqarorroq.
API ishlatilsa uning foydalanish sharti, authentication va rate limitiga rioya qilinadi. Browser network interception orqali yashirin endpointni topish uni public yoki ruxsat etilgan APIga aylantirmaydi.
HTTP crawling
Client status code, redirect, compression, encoding va cache headerlarini to‘g‘ri boshqaradi. Timeout, bounded retry va connection pool saytni ortiqcha yuklamaydi. 429 javobidagi Retry-After hisobga olinadi.
URL normalization fragment, relative path, query tartibi va canonical linkni ko‘rib, bir sahifani takror yuklashni kamaytiradi. Crawl frontier navbatdagi URLlarni saqlaydi, visited set cycle ni to‘xtatadi. Infinite calendar yoki filter kombinatsiyasi crawl trap yaratishi mumkin.
Parsing va data sifati
Parser fieldning mavjudligi, turi va formatini tekshiradi. Narxdan valyuta, son va locale ajratiladi; timestamp timezone bilan normalizatsiya qilinadi. Missing qiymat nolga tenglashtirilmaydi. Original URL, retrieval time va parser version provenance sifatida saqlanadi.
DOM selector hech narsa topmasa jobni jim successful deb belgilash data yo‘qotishini yashiradi. Expected record count, required field ratio va schema drift monitoring qilinadi. Sample sahifalar bilan parser regression testi yoziladi.
Dinamik sahifalar
Headless browser script, login va infinite scrollni bajarishi mumkin. U HTTP parserdan ancha qimmat, shuning uchun faqat zarur sahifada ishlatiladi. Element paydo bo‘lishi aniq shart bilan kutiladi; har scrollga fixed sleep qo‘yish beqaror.
Browser context cookie va storage ni izolyatsiya qiladi. Login credentiallari secret sifatida saqlanadi. MFA yoki CAPTCHAni avtomatik chetlab o‘tish o‘rniga rasmiy access yo‘li qo‘llanadi.
Huquqiy va etik chegaralar
Robots.txt crawler uchun yo‘riq beradi, ammo u ruxsatnoma yoki huquqiy hukmning o‘zi emas. Sayt foydalanish shartlari, mualliflik huquqi, shaxsiy ma’lumot va mahalliy qonunlar hisobga olinadi. Authentication yoki texnik access controlni chetlab o‘tish scrapingning odatiy qismi emas.
Request rate server capacityga mos cheklanadi, aniq User-Agent va aloqa ma’lumoti berilishi mumkin. Olingan shaxsiy data minimallashtiriladi, retention va o‘chirish talabi belgilanadi.
O‘zgarishlarni aniqlash
Har crawl to‘liq obyektni yangi yozuv sifatida qo‘shsa duplicate va storage o‘sadi. Stable source ID, canonical URL yoki content hash oldingi holat bilan bog‘laydi. Field o‘zgarishi history yoki latest snapshot modeliga yoziladi.
HTTP ETag va Last-Modified conditional request orqali o‘zgarmagan sahifani qayta yuklash xarajatini kamaytiradi. Server bu headerlarni bermasa scraper o‘z hashidan foydalanishi mumkin. Dynamic timestamp yoki reklama content hashni har safar o‘zgartirmasligi uchun asosiy blok ajratiladi.
O‘zgarish aniqlanmasa existing record yangilanmaydi.
Bog‘liq tushunchalar
Web crawler, HTML parser, Headless browser, CSS selector, Rate limiting, robots.txt, Data provenance