Playwright के साथ प्रतिस्पर्धी मूल्य ट्रैकर कैसे बनाएं
Senior Web Scraping Engineer
सारांश:
- प्रतिद्वंदी मूल्य ट्रैकर को एक स्थिर ऑफ़र कुंजी की ज़रूरत होती है। खुदरा विक्रेता, वेरिएंट, बाज़ार, विक्रेता और खरीद प्रकार मिलाने के बाद ही कीमतों की तुलना करें।
- Playwright रेंडर की हुई कीमत का इंतज़ार कर सकता है। लोकेटर को प्रोडक्ट सारांश तक सीमित रखें ताकि ट्रैकर किसी अनुशंसित या संदर्भ मूल्य को न पढ़ ले।
- राशि और मुद्रा को साथ रखें। दिखाए गए स्ट्रिंग और दशमलव प्रतिनिधित्व – दोनों को स्टोर करें ताकि समीक्षक पार्सर का ऑडिट कर सकें।
- कैप्चर विफल होने पर आखिरी सही कीमत जस की तस रहनी चाहिए। एक्सेस, नैविगेशन और पार्स समस्याओं को कलेक्शन मॉनिटरिंग तक भेजें।
परिचय
एक प्रोडक्ट पेज एक ही व्यू-पोर्ट में सेल प्राइस, रेफ़रेंस प्राइस और संबंधित उत्पादों की एक पंक्ति दिखा सकता है। अगर ट्रैकर पहला मुद्रा प्रतीक पढ़ ले, तो उसका अलर्ट ऐसे ऑफ़र की ओर इशारा कर सकता है जिसे ग्राहक ने चुना ही नहीं था।
नीचे दिया गया Playwright उदाहरण एक सार्वजनिक डेमो स्टोरफ़्रंट पर एक प्रोडक्ट सारांश के अंदर की कीमत पढ़ता है। व्यावहारिक हिस्सा एक्सट्रैक्शन के बाद आता है: यह तय करना कि कब दो कीमतें एक ही ऑफ़र का वर्णन करती हैं।
Playwright इंस्टॉल करें
यह उदाहरण Playwright Python पैकेज और Google Chrome की इंस्टॉल की हुई कॉपी का उपयोग करता है। पैकेज को प्रोजेक्ट वातावरण में इंस्टॉल करें और सुनिश्चित करें कि Chrome वर्कर पर उपलब्ध है। शेड्यूलर के लिए प्रोडक्ट URLs की एक स्पष्ट अलाउलिस्ट उपयोग करें और एक ही वर्कर से शुरुआत करें।
bash
python3 -m pip install playwright
उस ऑफ़र को कॉन्फ़िगर करें जिसे आप ट्रैक करेंगे
किसी ट्रैकर को पेज विज़िट करने से पहले ही अपना तुलना कुंजी परिभाषित कर लेनी चाहिए। इसमें खुदरा विक्रेता, प्रोडक्ट या वेरिएंट, बाज़ार, विक्रेता और खरीद प्रकार शामिल करें। तुलना जांच में मुद्रा और यूनिट आधार को शामिल रखें। Schema.org Offer मॉडल ऑफ़र को उसकी अंडरलाइंग आइटम से अलग पहचानता है और अलग-अलग प्राइस तथा करेंसी प्रॉपर्टीज़ शामिल करता है।
अगर ऑफ़र मार्केट रूटिंग पर निर्भर हो, तो तुलनीय कैप्चर्स के लिए वही स्वीकृत नेटवर्क संदर्भ उपयोग करें। प्राइस मॉनिटरिंग इन्फ्रास्ट्रक्चर वर्कफ़्लो रूटिंग विकल्पों को कवर करता है। इस डेमो में, ब्राउज़र एकल UK-स्टाइल डिस्प्ले पढ़ता है और सीधे GBP फ़ॉर्मेट को सत्यापित करता है।
Scrapeless के साथ स्क्रैपिंग शुरू करें
Scrapeless के साथ अपने वेब स्क्रैपिंग और ऑटोमेशन वर्कफ़्लो को मज़बूत बनाएं।
आज ही साइन अप करें और पाएं $5 का फ़्री क्रेडिट — कोई क्रेडिट कार्ड आवश्यक नहीं।अभी अपना फ़्री क्रेडिट Scrapeless डैशबोर्ड में क्लेम करें।
सार्वजनिक डेमो पेज से एक ऑफ़र पढ़ें
एक Playwright कैप्चर नैविगेशन की जांच कर सकता है, किसी अद्वितीय प्राइस लोकेटर का इंतज़ार कर सकता है, और एक कॉम्पैक्ट ऑब्ज़र्वेशन जारी कर सकता है। Playwright लोकेटर संदर्भ समझाता है कि लोकेटर्स एलिमेंट्स को कैसे टारगेट करते हैं और जब कई एलिमेंट्स मैच हों तो स्ट्रिक्ट ऑपरेशंस कैसे व्यवहार करते हैं। उदाहरण में शीर्षक और कीमत – दोनों को एक ही प्रोडक्ट सारांश तक सीमित किया गया है।
python
import json
import re
from datetime import datetime, timezone
from decimal import Decimal
from playwright.sync_api import sync_playwright
URL = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
with sync_playwright() as playwright:
browser = playwright.chromium.launch(channel="chrome")
try:
page = browser.new_page(locale="en-GB")
response = page.goto(URL, wait_until="domcontentloaded", timeout=20_000)
if response is None or not response.ok or page.url != URL:
raise RuntimeError("Expected the demo product page")
summary = page.locator(".product_main")
price = summary.locator(".price_color")
price.wait_for(state="visible", timeout=10_000)
display_price = price.inner_text().strip()
match = re.fullmatch(r"£([0-9]+\.[0-9]{2})", display_price)
if match is None:
raise ValueError("Unexpected demo price format")
print(json.dumps({
"product_key": "books-to-scrape:a-light-in-the-attic",
"title": summary.get_by_role("heading", level=1).inner_text(),
"final_url": page.url,
"offer_type": "listed",
"price": str(Decimal(match.group(1))),
"currency": "GBP",
"display_price": display_price,
"observed_at": datetime.now(timezone.utc).isoformat(),
}, ensure_ascii=False))
finally:
browser.close()
स्क्रिप्ट एक रिकॉर्ड प्रिंट करती है जिसमें दशमलव राशि के लिए एक स्ट्रिंग, प्रदर्शित वैल्यू और समय शामिल होता है। इंटरनेट टाइमस्टैम्प मानक UTC ऑफ़सेट को दर्शाने का एक तरीका परिभाषित करता है ताकि अलग-अलग वर्करों के ऑब्ज़र्वेशन्स को एक लाइन में रखा जा सके।
सफल कैप्चर्स की तुलना करें
किसी प्राइस परिवर्तन में वर्तमान ऑब्ज़र्वेशन की तुलना उसी ऑफ़र के लिए पिछले तुलनीय ऑब्ज़र्वेशन से होनी चाहिए। अलर्ट भेजने से पहले दोनों को संरक्षित करें। अगर जॉब को फिर वही वैल्यू मिले, तो अपने रिपोर्टिंग की ज़रूरतों के अनुसार या तो प्राइस हिस्ट्री को अपरिवर्तित छोड़ दें या एक कन्फ़र्मेशन स्टोर करें।
| कैप्चर परिणाम | ट्रैकर कार्रवाई |
|---|---|
| वही ऑफ़र और कम कीमत | प्राइस में कमी रिकॉर्ड करें और दोनों ऑब्ज़र्वेशन्स को लिंक करें |
| वही ऑफ़र और वही कीमत | कलेक्शन हेल्थ या एक कन्फ़र्मेशन रिकॉर्ड करें |
| मुद्रा या खरीद प्रकार बदला | तुलना से पहले ऑफ़र कुंजी दोबारा जांचें |
| एक्सेस चैलेंज, ग़ायब कीमत, या अनपेक्षित रीडायरेक्ट | एक कलेक्शन समस्या रिकॉर्ड करें और आखिरी वैध ऑब्ज़र्वेशन बनाए रखें |
जब डेमो से किसी वास्तविक लक्ष्य पर स्विच करें, तो एक वेरीफ़ाइड लोकैल पार्सर उपयोग करें और प्राइस बेसिस स्टोर करें। मेंबरशिप ऑफ़र और सामान्य ऑफ़र को अलग-अलग सीरीज़ मिलनी चाहिए। जिन पेजों पर चयन के बाद रेंडर होता है, उन पर चयनित वेरिएंट मार्कर और प्राइस क्षेत्र – दोनों का साथ में इंतज़ार करें। पार्सर वर्ज़न्स रखें ताकि पेज री-डिज़ाइन के बाद आने वाले किसी फ़ॉल्स अलर्ट को ट्रेस किया जा सके।
Playwright को मैनेज्ड ब्राउज़र पर कब ले जाएं
एक स्थानीय वर्कर से शुरू करें। जब वर्कर का रखरखाव या बार‑बार रन व्यावहारिक बाधा बन जाए, तो वेब ऑटोमेशन के लिए managed browser for web automation पर जाएँ। browser overview क्लाउड सत्रों का वर्णन करता है, और Scrapeless pricing उस बदलाव का अनुमान लगाने में मदद करता है। Playwright लोकेटर और ऑफ़र की को अपने नियंत्रण में रखें। Puppeteer proxy workflow संबंधित रूटिंग संबंधी चिंता को कवर करता है।
निष्कर्ष
डेमो एक उत्पाद ऑफ़र प्रिंट करता है। खुदरा विक्रेताओं के बीच उसी तरीक़े का उपयोग करने से पहले, यह जाँचें कि क्या होता है जब प्राइस रीजन खाली हो, मुद्रा बदल जाए, या पेज रीडायरेक्ट हो जाए। इन में से कोई भी अवलोकन अंतिम तुलनीय मूल्य की जगह नहीं लेनी चाहिए।
अपना Competitor Price Tracker बनाने के लिए तैयार हैं?
प्राइस ट्रैकिंग वर्कफ़्लो बना रहे डेवलपर्स से बात करने के लिए Discord या Telegram पर समुदाय से जुड़ें। शुरू करने के लिए Scrapeless Dashboard में एक अकाउंट बनाएँ।
FAQ
प्रश्न: Competitor price tracker को कितनी बार चलना चाहिए?
ऐसी आवृत्ति चुनें जो टीम द्वारा अलर्ट के उपयोग और साइट के अनुमत रिक्वेस्ट बजट से मेल खाती हो। एक प्राइस रिपोर्ट और समय‑संवेदी प्रमोशन मॉनिटर अलग‑अलग शेड्यूल का उपयोग कर सकते हैं।
प्रश्न: क्या Playwright price monitoring के लिए प्रॉक्सी की ज़रूरत है?
एक अनुमत क्षेत्रीय रूट स्थानीय स्टोरफ़्रंट व्यू को दोबारा बना सकता है। सिंगल‑मार्केट डेमो या अनुमोदित स्थानीय स्रोत अपना सामान्य कनेक्शन इस्तेमाल कर सकते हैं।
प्रश्न: अगर कोई साइट एक्सेस चैलेंज दिखाए तो ट्रैकर को क्या करना चाहिए?
विफलता को रिकॉर्ड करें और साइट ओनर के साथ एक्सेस पाथ की समीक्षा करें। तुलना के बेसलाइन के रूप में पिछले सफल ऑफ़र को बनाए रखें।
प्रश्न: क्या यह बिना AI एजेंट के चल सकता है?
Playwright और एक शेड्यूलर अवलोकन एकत्र और तुलना कर सकते हैं। सीमित समकालिकता के साथ चलाएँ और किसी ज्ञात उत्पाद पेज पर बदले हुए लोकेटर को वेलिडेट करें।
प्रश्न: क्या आप किसी भी competitor storefront की निगरानी कर सकते हैं?
अनुमोदित सतहों का उपयोग करें और जब स्कोप स्पष्ट न हो, तो लागू शर्तों, कलेक्शन लिमिट्स और री‑यूज़ अधिकारों की काउंसल के साथ समीक्षा करें।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।


