सुपरमार्केट की कीमतों को ट्रैक करना
- दिसंबर 2022 में, ग्रीस की तीन प्रमुख सुपरमार्केट चेन में कीमतों के बदलाव को ट्रैक करने के लिए एक वेबसाइट बनाई गई।
- इस प्रक्रिया में कई समस्याओं को हल करना पड़ा और बहुत-सी सीख मिली।
JavaScript साइटों को scrape करना
- मुख्य समस्या यह थी कि वेबसाइटें JavaScript से render होती थीं।
- Playwright का उपयोग करके web browser को प्रोग्रामेटिक तरीके से नियंत्रित किया गया।
- Playwright Chromium, Safari, Firefox browsers को सपोर्ट करता है और Node, Java, .NET, Python के साथ इस्तेमाल किया जा सकता है।
- infinite scroll को handle करने और product जानकारी निकालने के लिए code लिखा गया।
ऑटोमेशन
- M1 MacBook Pro पर पूरे सुपरमार्केट को scrape करने में 50 मिनट से 2 घंटे 30 मिनट तक लगते थे।
- development और testing के लिए यह अच्छा था, लेकिन एक अधिक स्थायी समाधान की जरूरत थी।
पुराना laptop इस्तेमाल करें?
- 2013 का एक पुराना laptop आज़माया गया, लेकिन उसका प्रदर्शन बहुत निराशाजनक था।
cloud का उपयोग?
- AWS बहुत महंगा था, जबकि Hetzner काफी सस्ता था।
- Hetzner के server का उपयोग करने का निर्णय लिया गया।
पुराना laptop और cloud दोनों का उपयोग!
- cloud server पर scraping को automate किया गया, और पुराने laptop को CI server के रूप में इस्तेमाल किया गया।
- Concourse का उपयोग करके pipeline सेट की गई और scraping jobs को रोज़ चलाया गया।
IP प्रतिबंध से बचना
- Akamai firewall rules की वजह से non-residential IP addresses से आने वाले requests block हो रहे थे।
- Tailscale का उपयोग करके requests को ऐसे दिखाया गया मानो वे घर के IP address से आ रहे हों।
विफलता के कारण और समय
- scraping project वेबसाइट developers के बदलावों से प्रभावित होता है।
- विफलता के दो प्रकार थे: breaking changes और non-breaking changes।
- जल्दी feedback मिलना बहुत महत्वपूर्ण है।
ऑप्टिमाइज़ेशन
- email alerts, hysteresis, timeout, retry settings जैसी कई optimization की गईं।
- बड़े server के उपयोग और data fetch कम करने से performance सुधारी गई।
लागत
- Hetzner पर server उपयोग की लागत बहुत कम थी।
- Cloudflare की R2 free tier का उपयोग करके data storage की लागत बचाई गई।
निष्कर्ष
- सुपरमार्केट की कीमतों में बदलाव को ट्रैक करने के लिए scraping pipeline के प्रमुख घटकों का वर्णन किया गया है।
GN⁺ की संक्षिप्त जानकारी
- यह लेख सुपरमार्केट की कीमतों में बदलाव को ट्रैक करने के लिए Playwright और cloud services के उपयोग के अनुभव को साझा करता है।
- इसमें JavaScript से render होने वाली वेबसाइटों को scrape करने के तरीके, साथ ही automation और optimization के तरीकों पर चर्चा की गई है।
- यह Hetzner और Tailscale का उपयोग करके लागत घटाने और IP प्रतिबंध से बचने के तरीकों को समझाता है।
- यह लेख web scraping और automation में रुचि रखने वाले लोगों के लिए उपयोगी हो सकता है।
1 टिप्पणियां
Hacker News राय
समान समस्या का अनुभव साझा किया
न्यूज़ीलैंड में इसी तरह का project चल रहा है
इसी तरह की वेबसाइट बनाई और काफ़ी रुचि मिली
ऑस्ट्रेलिया की दो प्रमुख supermarket chains price analysis AI algorithm के ज़रिए एकाधिकार जैसी स्थिति बना सकती हैं
स्वीडिश market में 8 साल से अधिक समय से सक्रिय हैं
price transparency हो तो tracking और आसान हो जाएगी
scraper fail न हो, इसके लिए बदलाव करने के तरीके
नए क्षेत्र में शिफ्ट होने पर price tracking का अनुभव साझा किया
scraping से भी ज़्यादा कठिन है लगातार अधिक परिष्कृत होते blockers को bypass करना
client-side JavaScript rendering की समस्या