TikTok दुकान मूल्य ट्रैकिंग उत्पाद स्नैपशॉट के साथ पायथन में
Lead Scraping Automation Engineer
TL;DR:
- कीमत ट्रैकिंग एक स्नैपशॉट पाइपलाइन है।
scraper.tiktok.shop.pageको एक शेड्यूल पर कॉल करें, प्रत्येक प्रतिक्रिया को टाइमस्टैम्प करें, और समान की तुलना करें। - तुलना कुंजी में बाजार संदर्भ शामिल है। उत्पाद आईडी, लौटाई गई क्षेत्र, मुद्रा, और SKU पहचान गलत मेल को रोकते हैं।
- उत्पाद और SKU परिवर्तन अलग-अलग घटनाएँ हैं। प्रदर्शित उत्पाद की कीमत और स्टॉक को भिन्न उपलब्धता या कीमत से अलग से ट्रैक करें।
- मिसिंग का मतलब शून्य नहीं है। अनुपस्थित फ़ील्ड को आउट-ऑफ-स्टॉक या मुफ्त-कीमत अलर्ट ट्रिगर नहीं करना चाहिए।
- कार्यकर्ता इतिहास या अलर्ट नहीं बनाता है। SQLite भंडारण, तुलना के नियम, शेड्यूलिंग, और डिलीवरी कॉलिंग एप्लिकेशन में जीवित रहते हैं।
- शुरू करने के लिए स्वतंत्र। नए Scrapeless खातों में Scrapeless डैशबोर्ड के माध्यम से मुफ्त क्रेडिट शामिल है।
परिचय: एक ट्रैकर एक दोहराए गए अनुरोध से अधिक है
एकल TikTok शॉप उत्पाद प्रतिक्रिया बताती है कि पृष्ठ अब क्या दिखाता है। एक कीमत ट्रैकर एक अलग प्रश्न का उत्तर देता है: दो तुलनीय अवलोकनों के बीच क्या बदल गया, और क्या परिवर्तन किसी को सूचित करने के लिए पर्याप्त मायने रखता है?
यह भिन्नता संपूर्ण डिज़ाइन को प्रभावित करती है। Scrapeless शॉप कार्यकर्ता संरचित उत्पाद स्नैपशॉट प्रदान करता है। एप्लिकेशन एक टाइमस्टैम्प जोड़ता है, उत्पाद और SKU पंक्तियों को स्टोर करता है, प्रत्येक पंक्ति की अपनी पूर्व अवलोकन के साथ तुलना करता है, और एक अलर्ट-तैयार घटना को बाहर निकालता है। यह गाइड पाइपलाइन को Python और SQLite के साथ बनाता है।
उत्पाद स्नैपशॉट्स के पीछे के अनुरोध पैटर्न के लिए, लाइव Scrapeless डेटा अभिनेता गाइड पढ़ें।
पाइपलाइन एक झलक में
| चरण | क्रिया | मजबूत आउटपुट |
|---|---|---|
| फ़ेच | ID और क्षेत्र द्वारा एक ज्ञात उत्पाद का अनुरोध करें | कच्चा JSON स्नैपशॉट |
| सामान्यीकृत | उत्पाद और SKU फ़ील्ड को अलग करें | तुलनीय पंक्तियाँ |
| स्टोर | टाइमस्टैम्पेड अवलोकन डालें | उत्पाद और SKU इतिहास |
| तुलना | पूर्व मेल खाने वाले रिकॉर्ड को खोजें | परिवर्तन घटनाएँ |
| डिलीवर | व्यावसायिक नियम लागू करें | अलर्ट-तैयार JSON |
यह पाइपलाइन एप्लिकेशन द्वारा प्रदान की गई उत्पाद सूची की निगरानी करती है। यह एक दुकान में हर उत्पाद की खोज नहीं करती है या एक निजी ऑर्डर लेजर को उजागर नहीं करती है।
आवश्यकताएँ
- Scrapeless डैशबोर्ड से एक Scrapeless खाता और API टोकन
- स्टैंडर्ड लाइब्रेरी और SQLite समर्थन के साथ Python
- ज्ञात सार्वजनिक TikTok शॉप उत्पाद आईडी
- प्रत्येक उत्पाद के लिए एक क्षेत्र नियम
- एक अलर्ट नीति जो परिभाषित करती है कि कौन से परिवर्तन मायने रखते हैं
कोड को SCRAPELESS_API_KEY में एक लाइव टोकन की आवश्यकता है। उत्पाद सूची आपके एप्लिकेशन द्वारा प्रदान की जाती है।
चरण 1 — उत्पाद स्नैपशॉट फ़ेच करें
POST https://api.scrapeless.com/api/v1/scraper/request को scraper.tiktok.shop.page के कार्यकर्ता के साथ कॉल करें। इसका इनपुट product_id के रूप में एक स्ट्रिंग और region को शामिल करता है। TikTok शॉप पृष्ठ अभिनेता दस्तावेज़ीकरण अनुरोध और प्रतिक्रिया फ़ील्ड दिखाता है।
परिणाम में उत्पाद पहचान, लौटाई गई क्षेत्र, विक्रेता, नाम, बेची गई संख्या, कीमत, मुद्रा, स्टॉक, रेटिंग, समीक्षा संख्या, चित्र, विकल्प, SKU, श्रेणियाँ, और शिपिंग विवरण शामिल हो सकते हैं। सामान्यीकरण के पहले कच्ची प्रतिक्रिया को स्टोर करें ताकि बाद में स्कीमा परिवर्तनों को बिना एक ही अवलोकन को फिर से संग्रहित किए संभाला जा सके।
चरण 2 — उत्पाद और SKU पंक्तियों को सामान्यीकृत करें
उत्पाद आईडी और लौटाए गए क्षेत्र से बने उत्पाद कुंजी का उपयोग करें। विविधताओं के लिए, SKU पहचानकर्ता जोड़ें। तुलना रिकॉर्ड में मुद्रा होना चाहिए; एक संख्यात्मक मूल्य अपने आप में किसी सुरक्षित क्रॉस-मार्केट अर्थ नहीं रखता।
ISO मुद्रा कोड संदर्भ मुद्रा पहचानकर्ताओं की भूमिका की व्याख्या करता है। स्रोत मूल्य को बनाए रखें, भले ही डाउनस्ट्रीम रिपोर्टिंग परत भी कीमतों को परिवर्तित करती हो।
उत्पाद और विविधता का इन्वेंटरी अलग रहना चाहिए। TikTok शॉप की इन्वेंटरी दस्तावेज़ उत्पाद और SKU पहचानकर्ताओं को अलग क्वेरी आयाम के रूप में मानती है, जो एक साफ स्नैपशॉट स्कीमा से मेल खाता है।
Scrapeless के साथ स्क्रैपिंग शुरू करें
Scrapeless के साथ अपने वेब स्क्रैपिंग और ऑटोमेशन वर्कफ़्लो को शक्ति प्रदान करें!
आज ही साइन अप करें और $5 का मुफ्त क्रेडिट प्राप्त करें — क्रेडिट कार्ड की आवश्यकता नहीं।Scrapeless डैशबोर्ड में अपना मुफ्त क्रेडिट तुरंत प्राप्त करें।
चरण 3 — SQLite में स्नैपशॉट्स को संग्रहित करें
SQLite एक छोटे मॉनिटर के लिए अच्छी तरह से काम करता है क्योंकि डेटाबेस और समय कार्य Python से बिना किसी अलग सेवा के उपलब्ध होते हैं। SQLite CREATE TABLE दस्तावेज़ स्कीमा में उपयोग किए जाने वाले तालिका प्रतिबंधों को परिभाषित करता है।
python
import json
import os
import sqlite3
from datetime import datetime, timezone
from urllib.request import Request, urlopen
ENDPOINT = "https://api.scrapeless.com/api/v1/scraper/request"
def fetch_product(product_id, region):
body = json.dumps({
"actor": "scraper.tiktok.shop.page",
"input": {"product_id": str(product_id), "region": region},
}).encode()
request = Request(
ENDPOINT,
data=body,
headers={
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
"content-type": "application/json",
},
method="POST",
)
with urlopen(request, timeout=60) as response:
return json.load(response)
def open_database(path="tiktok_shop_history.sqlite3"):
database = sqlite3.connect(path)
database.execute("""
CREATE TABLE IF NOT EXISTS product_snapshots (
observed_at TEXT NOT NULL,
product_id TEXT NOT NULL,
region TEXT NOT NULL,
currency TEXT,
price TEXT,
stock INTEGER,
sold_count INTEGER,
raw_json TEXT NOT NULL,
PRIMARY KEY (observed_at, product_id, region)
)
""")
return database
def store_product(database, raw):
observed_at = datetime.now(timezone.utc).isoformat()
row = (
observed_at,
str(raw.get("product_id", "")),
str(raw.get("region", "")),
raw.get("currency"),
None if raw.get("price") is None else str(raw.get("price")),
raw.get("stock"),
raw.get("sold_count"),
json.dumps(raw, ensure_ascii=False),
)
database.execute(
"INSERT INTO product_snapshots VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
row,
)
database.commit()
return row
स्रोत पाठ के रूप में मूल्य को संग्रहीत करें या उन्हें सिस्टम में समर्थन देने वाले सटीक अंश प्रकार के रूप में। बाइनरी फ्लोटिंग-पॉइंट पैसे के लिए एक कमजोर भंडारण विकल्प है क्योंकि कुछ दशमलव मानों को सटीक रूप से प्रदर्शित नहीं किया जा सकता।
चरण 4 — पहले अवलोकन के साथ तुलना करें
तुलना केवल समान उत्पाद आईडी, लौटाई गई क्षेत्र और मुद्रा के भीतर होनी चाहिए। सबसे हाल की पूर्व पंक्ति का क्वेरी करें, फिर उन फ़ील्ड्स के लिए एक घटना उत्पन्न करें जो दोनों अवलोकनों में मौजूद हैं।
python
from decimal import Decimal
def previous_snapshot(database, product_id, region, observed_at):
return database.execute(
"""
SELECT observed_at, currency, price, stock
FROM product_snapshots
WHERE product_id = ? AND region = ? AND observed_at < ?
ORDER BY observed_at DESC
LIMIT 1
""",
(str(product_id), region, observed_at),
).fetchone()
def compare(current, previous):
if previous is None:
return {"state": "baseline", "changes": []}
_, old_currency, old_price, old_stock = previous
changes = []
if current[3] == old_currency and current[4] is not None and old_price is not None:
new_price = Decimal(current[4])
prior_price = Decimal(old_price)
if new_price != prior_price:
changes.append({
"field": "price",
"before": str(prior_price),
"after": str(new_price),
"currency": current[3],
})
if current[5] is not None and old_stock is not None and current[5] != old_stock:
changes.append({"field": "stock", "before": old_stock, "after": current[5]})
return {"state": "compared", "changes": changes}
database = open_database()
raw = fetch_product(os.environ["TIKTOK_SHOP_PRODUCT_ID"], "GB")
current = store_product(database, raw)
prior = previous_snapshot(database, current[1], current[2], current[0])
print(json.dumps(compare(current, prior), indent=2))
पहला अवलोकन एक आधार रेखा स्थापित करता है और इसे मूल्य परिवर्तन चेतावनी उत्पन्न नहीं करनी चाहिए। एक लापता मान भी शून्य या स्टॉक से बाहर की घटना नहीं बननी चाहिए।
चरण 5 — SKU परिवर्तनों को ट्रैक करें
व观察ण समय, उत्पाद आईडी, लौटाई गई क्षेत्र और SKU आईडी द्वारा कुंजीबद्ध एक दूसरा इतिहास तालिका बनाएं। विकल्प लेबल, SKU मूल्य जब प्रकट होता है, मुद्रा और उपलब्धता को संग्रहीत करें। एक SKU की तुलना केवल अपने अपने पूर्व पंक्ति से करें।
वैरिएंट सूचियाँ बदल सकती हैं। एक नए अवलोकित SKU को एक खोज घटना माना जाता है; एक लापता SKU एक अनुपस्थिति है जिसे एप्लिकेशन की संग्रह नीति के तहत पुष्टि की आवश्यकता है। एक लापता प्रतिक्रिया से वैरिएंट को निरस्त नहीं करें।
चरण 6 — चेतावनी-तैयार घटनाएँ उत्पन्न करें
संग्रह को सूचनाकरण से अलग रखें। तुलना कार्य ऐसे घटनाएँ लिख सकता है जैसे:
- एक ही मुद्रा और क्षेत्र में उत्पाद मूल्य बदल गया
- कुल स्टॉक ने एक व्यावसायिक सीमा को पार किया
- एक ज्ञात SKU की उपलब्धता में परिवर्तन हुआ
- एक नया SKU प्रकट हुआ
सटीक परिवर्तनों की गणना के बाद थ्रेशोल्ड लागू करें। पिछले और वर्तमान अवलोकन समय, उत्पाद आईडी, क्षेत्र, मुद्रा, फील्ड, और पहले/बाद के मान शामिल करें। एक डाउनस्ट्रीम श्रमिक घटना को ईमेल, चैट, एक वेबहुक या एक आंतरिक डैशबोर्ड पर रूट कर सकता है।
sold_count को ध्यान से पढ़ें
sold_count को उत्पाद स्नैपशॉट के साथ चिह्नित रूप में बनाए रखें। यह रिपोर्टिंग विंडो, व्यक्तिगत ऑर्डरों, रिफंड, या GMV की पहचान नहीं करता है। अवलोकनों के बीच परिवर्तन एक पृष्ठ-लेबल परिवर्तन है, न कि एक पूर्ण बिक्री खाता-बही।
Scrapeless उत्पाद अभिनेता को Scraping API के माध्यम से प्रदान करता है। उत्पाद सेट और चुनी गई अनुसूची की लागत का अनुमान लगाने के लिए वर्तमान मूल्य निर्धारण पृष्ठ का उपयोग करें।
निष्कर्ष: स्नैपशॉट्स की तुलना योग्य रखें
TikTok शॉप मूल्य ट्रैकिंग को एक स्थिर कुंजी, संग्रह टाइमस्टैम्प, अलग उत्पाद और SKU इतिहास, और सावधानीपूर्वक परिवर्तन नियमों की आवश्यकता है। अभिनेता प्रत्येक सार्वजनिक उत्पाद स्नैपशॉट प्रदान करता है; चारों ओर का पायथन कार्य उन अवलोकनों को इतिहास और चेतावनी-तैयार घटनाओं में बदलता है।
आपके मूल्य मॉनिटर बनाने के लिए तैयार हैं?
मॉनिटरिंग स्कीमा पर चर्चा करने के लिए Scrapeless Discord या Telegram समुदाय में शामिल हों। जब उत्पाद सूची और अलर्ट नीति तैयार हो जाए तो Scrapeless Dashboard में एक खाता बनाएं।
अक्सर पूछे जाने वाले प्रश्न
प्रश्न: क्या Scrapeless स्वचालित TikTok शॉप मूल्य इतिहास प्रदान करता है?
नहीं। अभिनेता उत्पाद स्नैपशॉट लौटाता है; कॉल करने वाले एप्लिकेशन अनुरोध निर्धारित करते हैं, अवलोकनों को संग्रहीत करते हैं, पंक्तियों की तुलना करते हैं, और चेतावनियाँ प्रदान करते हैं।
प्रश्न: TikTok शॉप मूल्य ट्रैकर को कौनसी कुंजी का उपयोग करना चाहिए?
उत्पाद रिकॉर्ड के लिए उत्पाद आईडी और लौटाई गई क्षेत्र का उपयोग करें, और वैरिएंट रिकॉर्ड के लिए SKU आईडी जोड़ें। हर मूल्य तुलना में मुद्रा को बनाए रखें।
प्रश्न: क्या लापता मूल्य या स्टॉक मान को शून्य के रूप में संग्रहीत किया जाना चाहिए?
नहीं। लापता का अर्थ अनजाना है, जबकि शून्य एक निश्चित मान है जिसका व्यवसायिक अर्थ अलग है।
प्रश्न: क्या बेचे गए गिनती को दैनिक बिक्री या GMV के रूप में उपयोग किया जा सकता है?
नहीं। लौटाया गया लेबल रिपोर्टिंग विंडो स्थापित नहीं करता है या एक पूर्ण आदेश और राजस्व खाता-बही नहीं प्रदान करता है।
प्रश्न: ट्रैकर को कितनी बार चलाना चाहिए?
व्यावसायिक निर्णय, उत्पाद अस्थिरता, अनुमत उपयोग, और बजट के आधार पर एक ताल तय करें। अनुसूची को रिकॉर्ड करें ताकि इतिहास में अंतर स्पष्ट रहे।
प्रश्न: क्या सार्वजनिक शॉप कीमतों की निगरानी करना कानूनी है?
कानूनिकता क्षेत्राधिकार, बाजार, उद्देश्य, पहुँच विधि, और लागू शर्तों पर निर्भर करती है। एक अनुमत उद्देश्य के लिए सार्वजनिक उत्पाद डेटा की निगरानी करें और इच्छित उपयोग के लिए कानूनी सलाह प्राप्त करें।
प्रश्न: क्या मुझे प्रॉक्सी, पृष्ठ रक्षा, या DOM चयनकर्ताओं का प्रबंधन करने की आवश्यकता है?
Scrapeless संग्रह सतह को संभालता है। एप्लिकेशन उत्पाद सूची, टाइमस्टैम्प, भंडारण, तुलना, और सूचनाओं का प्रबंधन करता है।
प्रश्न: क्या यह बिना AI एजेंट के चल सकता है?
हाँ। कार्यप्रवाह सीधे HTTP अनुरोध, SQLite, और सामान्य पायथन कोड का उपयोग करता है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।


