वापस ब्लॉग पर

TikTok प्रोफाइल, पोस्ट, और दुकान डेटा को CSV में निर्यात करें

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

03-Sep-2026

TL;DR:

  • टिकटॉक डेटा को CSV में निर्यात करने के लिए प्रति तत्व स्तर एक तालिका की आवश्यकता है। प्रोफाइल, पोस्ट, उत्पाद और SKU एक सुरक्षित सपाट स्कीमा साझा नहीं करते हैं।
  • पहचानकर्ता पाठ के रूप में बनाए रखने चाहिए। खाता, पोस्ट, उत्पाद, विक्रेता, और SKU आईडी संख्या के रूप में व्याख्यायित होने पर सटीकता खो सकते हैं।
  • संख्यात्मक मीट्रिक को स्पष्ट रूपांतरण की आवश्यकता होती है। मान्य गिनतियों और कीमतों को इच्छित प्रकारों में परिवर्तित करते समय गुम मानों को बनाए रखें।
  • घुसपैठ सूची के लिए जानबूझकर सीरियलाइजेशन की आवश्यकता होती है। हैशटैग और विकल्प जोड़ियाँ पठनीय सीमांकित पाठ या अलग बाल तालिकाओं का उपयोग कर सकती हैं।
  • CSV कॉल करने वाले द्वारा बनाया जाता है। दस्तावेजित अभिनेता JSON लौटाते हैं न कि स्वदेशी Excel वर्कबुक।
  • शुरू करने के लिए स्वतंत्र। नए Scrapeless खातों में Scrapeless डैशबोर्ड के माध्यम से मुफ्त क्रेडिट शामिल है।

परिचय: JSON को समतल करना डेटा-मॉडल निर्णय है

JSON घुसपैठ सांख्यिकी, ऐरे, उत्पाद विकल्पों और SKU वस्तुओं का प्रतिनिधित्व कर सकता है। एक CSV फ़ाइल नहीं कर सकती। एक उपयोगी निर्यात इस प्रकार शुरू होता है कि यह तय करना कि प्रत्येक पंक्ति में कौन सा तत्व होगा और कैसे शून्य मान, स्ट्रिंग और घुसपैठ संग्रह रूपांतरण को सहन करेंगे।

यह ट्यूटोरियल Scrapeless टिकटॉक प्रोफाइल, पोस्ट और दुकान प्रतिक्रिया को चार CSV फ़ाइलों में मैप करता है: प्रोफाइल, पोस्ट, उत्पाद, और SKU। रूपांतरण पहचानकर्ता सटीकता को बनाए रखता है, कच्ची प्रतिक्रियाएँ उपलब्ध रखता है, और जब एक URL पर्याप्त होता है तो मीडिया फ़ाइलों की नकल से बचता है।

TikTok डेटा अभिनेता अवलोकन उन अनुरोध इनपुट्स को मैप करता है जो इन JSON ऑब्जेक्ट्स का उत्पादन करते हैं।

पाइपलाइन एक नज़र में

JSON ऑब्जेक्ट CSV ग्रेन प्राथमिक कुंजी उम्मीदवार
उपयोगकर्ता विवरण एक अवलोकित प्रोफ़ाइल खाता आईडी + संग्रहण समय
उपयोगकर्ता कार्य आइटम एक अवलोकित पोस्ट पोस्ट आईडी + संग्रहण समय
दुकान पृष्ठ उत्पाद एक अवलोकित उत्पाद उत्पाद आईडी + क्षेत्र + संग्रहण समय
दुकान पृष्ठ SKU एक अवलोकित भिन्नता उत्पाद आईडी + क्षेत्र + SKU आईडी + संग्रहण समय

निर्यात एक एप्लिकेशन-साइड रूपांतरण है। यह दावा नहीं करता कि अभिनेता CSV या Excel फ़ाइलें सीधे लौटाते हैं।

पूर्वापेक्षाएँ

  • scraper.tiktok.user.detail, scraper.tiktok.user.work, या scraper.tiktok.shop.page से सहेजे गए JSON प्रतिक्रियाएँ
  • एक संग्रहण समय स्टैम्प जिसे कॉल करने वाले एप्लिकेशन द्वारा दर्ज किया गया है
  • प्रकार और शून्य हैंडलिंग को परिभाषित करने वाला एक फ़ील्ड शब्दकोश
  • निरीक्षण के लिए UTF-8-संगत स्प्रेडशीट या विश्लेषण सॉफ़्टवेयर

नीचे दिए गए रूपांतरण को पाठक द्वारा प्रदान किए गए JSON फ़ाइलों के साथ स्थानीय रूप से चलाया जा सकता है। प्रतिक्रियाएँ सहेजी जाने के बाद कोई Scrapeless प्रमाण पत्र आवश्यक नहीं है।

चरण 1: चार निर्यात स्कीमा परिभाषित करें

प्रोफाइल और पोस्ट खाता पहचानकर्ताओं के माध्यम से जुड़ते हैं, जबकि उत्पाद और SKU उत्पाद आईडी और क्षेत्र के माध्यम से जुड़ते हैं। इन तत्व स्तरों को अलग रखें:

फ़ाइल चयनित फ़ील्ड
profiles.csv खाता आईडी, उपयोगकर्ता नाम, sec_uid, सार्वजनिक सांख्यिकी, ध्वज, संग्रहण समय
posts.csv पोस्ट आईडी, खाता आईडी, URL, विवरण, हैशटैग, सार्वजनिक मीट्रिक, संग्रहण समय
products.csv उत्पाद आईडी, क्षेत्र, विक्रेता आईडी, नाम, मूल्य, मुद्रा, स्टॉक, रेटिंग, गिनती, संग्रहण समय
skus.csv उत्पाद आईडी, क्षेत्र, SKU आईडी, विकल्प, SKU मूल्य, उपलब्धता, संग्रहण समय

RFC 4180 एक सामान्य CSV प्रारूप और उद्धरण नियमों को परिभाषित करता है; CSV प्रारूप विनिर्देश तब उपयोगी होता है जब निर्यात प्रणालियों के बीच चलते हैं। Python का CSV मॉड्यूल दस्तावेज़ समझाता है कि फ़ाइलों को newline="" के साथ क्यों खोला जाना चाहिए।

चरण 2: आईडी और शून्यों को बनाए रखें

प्रत्येक संख्यात्मक-लगने वाले पहचानकर्ता को निर्यात से पहले एक स्ट्रिंग में परिवर्तित किया जाना चाहिए। यह खाता, पोस्ट, उत्पाद, विक्रेता, संगीत, और SKU आईडी पर लागू होता है। अन्यथा, एक स्प्रेडशीट वैज्ञानिक अंकन या अंकों को गोल कर सकती है।

गुम मानों को खाली रहना चाहिए या एक दस्तावेजित शून्य चिन्ह का उपयोग करना चाहिए। एक गुम अनुयायी गणना, मूल्य, स्टॉक मात्रा, रेटिंग, या जुड़ाव मीट्रिक को शून्य में न बदलें।

Python का Decimal दस्तावेज़ कीमतों के लिए सटीक दशमलव अंकगणित का वर्णन करता है। एक साधारण CSV निर्यात के लिए, मूल मूल्य पाठ को बनाए रखना अक्सर इसे द्विघात बिंदु में परिवर्तित करने की तुलना में सुरक्षित होता है।

Scrapeless के साथ स्क्रैपिंग शुरू करें

Scrapeless के साथ अपने वेब स्क्रैपिंग और ऑटोमेशन कार्यप्रवाह को शक्ति प्रदान करें!
आज साइन अप करें और $5 का मुफ्त क्रेडिट पाएं — कोई क्रेडिट कार्ड आवश्यक नहीं

अभी अपने मुफ्त क्रेडिट का दावा करें Scrapeless डैशबोर्ड में।

चरण 3: अर्थ खोने के बिना पैठी फ़ील्ड को समतल करें

छोटी प्रदर्शन सूचियाँ उस विभाजक का उपयोग कर सकती हैं जिसे क्षेत्र शब्दकोश रिकॉर्ड करता है। उदाहरण के लिए, हैशटैग को | के साथ जोड़ा जा सकता है, और SKU विकल्प Color=Black | Size=M बन सकते हैं। जब सूची तत्वों को अपने स्वयं के फ़ील्ड या विश्लेषण की आवश्यकता होती है, तो एक अलग बाल तालिका बनाए रखें।

नैस्टेड डिक्शनरी को स्पष्ट रूप से मैप किया जाना चाहिए। उत्पाद मुद्रा और कीमतें price के अंतर्गत रहती हैं; समग्र मात्रा और उपलब्धता stock के अंतर्गत रहती हैं; प्रोफाइल गणनाएँ statistics के अंतर्गत रहती हैं। एक सामान्य पुनरावृत्त फ्लैटनर अस्थिर कॉलम नाम उत्पन्न करने और एंटिटी स्तरों को मिलाने की प्रवृत्ति रखता है।

चरण 4: Python में चार तालिकाएँ निर्यात करें

स्क्रिप्ट वर्तमान निर्देशिका में तीन सहेजे गए फ़ाइलों की अपेक्षा करती है: profile.json, posts.json, और shop-product.json। यह केवल तभी एक CSV लिखती है जब संबंधित स्रोत मौजूद हो।

python Copy
import csv
import json
from pathlib import Path

COLLECTED_AT = "reader-supplied-utc-timestamp"


def load_if_present(path):
    return json.loads(path.read_text(encoding="utf-8")) if path.exists() else None


def text_id(value):
    return "" if value is None else str(value)


def write_csv(path, rows):
    if not rows:
        return
    with path.open("w", newline="", encoding="utf-8") as output:
        writer = csv.DictWriter(output, fieldnames=list(rows[0]))
        writer.writeheader()
        writer.writerows(rows)


profile = load_if_present(Path("profile.json"))
posts_response = load_if_present(Path("posts.json"))
shop = load_if_present(Path("shop-product.json"))

if profile:
    statistics = profile.get("statistics") or {}
    write_csv(Path("profiles.csv"), [{
        "collected_at": COLLECTED_AT,
        "account_id": text_id(profile.get("account_id")),
        "unique_id": profile.get("unique_id"),
        "sec_uid": profile.get("sec_uid"),
        "followers": statistics.get("followers"),
        "following": statistics.get("following"),
        "likes": statistics.get("likes"),
        "videos": statistics.get("videos"),
        "is_verified": profile.get("is_verified"),
        "is_private": profile.get("is_private"),
    }])

if posts_response:
    post_rows = []
    for item in posts_response.get("items") or []:
        post_rows.append({
            "collected_at": COLLECTED_AT,
            "post_id": text_id(item.get("post_id")),
            "author_id": text_id(item.get("author_id")),
            "post_url": item.get("post_url"),
            "description": item.get("description"),
            "create_time": item.get("create_time"),
            "hashtags": "|".join(str(v) for v in (item.get("hashtags") or [])),
            "play_count": item.get("play_count"),
            "like_count": item.get("like_count"),
            "comment_count": item.get("comment_count"),
            "share_count": item.get("share_count"),
            "collect_count": item.get("collect_count"),
            "is_pinned": item.get("is_pinned"),
        })
    write_csv(Path("posts.csv"), post_rows)

if shop:
    price = shop.get("price") or {}
    stock = shop.get("stock") or {}
    product_id = text_id(shop.get("product_id"))
    region = shop.get("region")
    write_csv(Path("products.csv"), [{
        "collected_at": COLLECTED_AT,
        "product_id": product_id,
        "region": region,
        "seller_id": text_id(shop.get("seller_id")),
        "name": shop.get("name"),
        "currency": price.get("currency"),
        "sale_price": price.get("sale_price"),
        "original_price": price.get("original_price"),
        "available_quantity": stock.get("available_quantity"),
        "in_stock": stock.get("in_stock"),
        "rating": shop.get("rating"),
        "review_count": shop.get("review_count"),
        "sold_count": shop.get("sold_count"),
    }])

    sku_rows = []
    for sku in shop.get("skus") or []:
        sku_price = sku.get("price") or {}
        sku_rows.append({
            "collected_at": COLLECTED_AT,
            "product_id": product_id,
            "region": region,
            "sku_id": text_id(sku.get("sku_id")),
            "options": " | ".join(
                f"{v.get('name', '')}={v.get('value', '')}"
                for v in (sku.get("options") or [])
            ),
            "currency": sku_price.get("currency"),
            "sale_price": sku_price.get("sale_price"),
            "available_quantity": sku.get("available_quantity"),
            "in_stock": sku.get("in_stock"),
        })
    write_csv(Path("skus.csv"), sku_rows)

टाइमस्टैम्प जानबूझकर पाठक द्वारा प्रदान किया गया है क्योंकि यह संग्रहण घटना से संबंधित है, निर्यात चलने से नहीं। निष्पादन से पहले प्लेसहोल्डर को स्रोत प्रतिक्रिया के पास संग्रहीत टाइमस्टैम्प के साथ बदलें।

चरण 5: CSV आउटपुट मान्य करें

मान्यकरण को फ़ाइल और विश्लेषणात्मक अर्थ की जांच करनी चाहिए:

  1. हर CSV को UTF-8 के रूप में खोलें और पुष्टि करें कि विवरण और उत्पाद नाम पठनीय बने रहते हैं।
  2. पहचानकर्ता कॉलम को स्पष्ट रूप से टेक्स्ट के रूप में आयात करें और उनके अंशों की तुलना स्रोत JSON से करें।
  3. स्रोत एंटिटीज़ और निर्यातित पंक्तियों को समान अनाज पर गिनें।
  4. यह जांचें कि गायब मान शून्य के बजाय खाली रहते हैं।
  5. पुष्टि करें कि मूल्य हमेशा मुद्रा और उत्पाद या SKU संदर्भ के साथ यात्रा करता है।
  6. विवरण, हैशटैग, और विकल्प स्ट्रिंग्स की जांच करें जिनमें अल्पविराम, उद्धरण, या लाइन ब्रेक शामिल हैं।

फ़ाइलों के बगल में एक छोटा क्षेत्र शब्दकोश रखें जिसमें स्रोत पथ, CSV कॉलम, प्रकार, शून्य नीति, और एंटिटी अनाज हों। यह सुनिश्चित करता है कि जब चयनित फ़ील्ड या डाउनस्ट्रीम उपकरण बदलते हैं, तो प्रत्येक निर्यात पुनरुत्पादित हो सकता है।

मीडिया को संदर्भ के रूप में रखें

अवतार, कवर, उत्पाद, और SKU छवि फ़ील्ड में URLs शामिल हो सकते हैं। केवल विश्लेषण के लिए आवश्यक लिंक का निर्यात करें और डेटा सेट में असंबंधित मीडिया डाउनलोड करने से बचें। URL की आयु भिन्न हो सकती है, इसलिए CSV लिंक को स्थायी मीडिया संग्रह के रूप में नहीं माना जाना चाहिए।

बड़े पाइपलाइनों के लिए, कच्चा JSON और संग्रहण metadata को टिकाऊ संग्रहण में रखें, फिर प्रत्येक विश्लेषक या उपकरण के लिए CSV दृश्य पुन: उत्पन्न करें। Scrapeless Scraping API के माध्यम से प्रमेशिका प्रदान करता है; संग्रहण मात्रा की योजना बनाते समय वर्तमान मूल्य निर्धारण पृष्ठ की समीक्षा करें।

निष्कर्ष: प्रतिक्रिया आकार के बजाय एंटिटी द्वारा निर्यात करें

TikTok डेटा को CSV में निर्यात करना तब काम करता है जब रूपांतरण एंटिटी अनाज, पहचानकर्ता स्ट्रिंग, शून्य, नैस्टेड-फ़ील्ड अर्थ, मुद्रा, और संग्रहण समय को बनाए रखता है। चार केंद्रित फ़ाइलें एक चौड़ी तालिका की तुलना में मान्यकरण और संयोजन में सरल होती हैं जो प्रोफाइल, पोस्ट, उत्पाद, और विविधताओं को मिलाती है।

क्या आप विश्लेषण-तैयार CSV निर्यात बनाने के लिए तैयार हैं?

निर्यात схемाओं की तुलना करने के लिए Scrapeless Discord या Telegram समुदाय में शामिल हों। जब आप स्रोत JSON संग्रहित करने के लिए तैयार हों तो Scrapeless Dashboard में एक खाता बनाएं।

अक्सर पूछे जाने वाले प्रश्न

प्रश्न: क्या TikTok अभिनेता CSV या Excel फ़ाइलों को सीधे निर्यात कर सकते हैं?

दस्तावेज़ित अभिनेता JSON लौटाते हैं। कॉलिंग एप्लिकेशन प्रतिक्रिया को CSV या अन्य विश्लेषणात्मक फॉर्मेट में परिवर्तित करता है।

प्रश्न: टीकटॉक आईडी को पाठ के रूप में निर्यात क्यों किया जाना चाहिए?

पाठ प्रत्येक अंक को बनाए रखता है जब स्प्रेडशीट और विश्लेषण उपकरण अन्यथा लंबे नंबर-समान पहचानकर्ताओं को बाध्य करते हैं।

प्रश्न: क्या प्रोफाइल, पोस्ट, उत्पाद, और SKU एक CSV साझा करना चाहिए?

प्रोफाइल, पोस्ट, उत्पाद, और SKU को अलग तालिकाओं का उपयोग करना चाहिए क्योंकि प्रत्येक का अलग पंक्ति अनाज और कुंजी होती है।

प्रश्न: गायब TikTok मैट्रिक्स CSV में कैसे दिखना चाहिए?

गायब मैट्रिक्स को खाली रहना चाहिए या एक दस्तावेज़ित शून्य चिन्ह का उपयोग करना चाहिए। उन्हें स्रोत साक्ष्य के बिना शून्य नहीं बनना चाहिए।

प्रश्न: क्या निर्यात को छवियाँ और वीडियो डाउनलोड करने की आवश्यकता है?

निर्यात को मीडिया डाउनलोड करने की आवश्यकता नहीं है। विश्लेषण के लिए आवश्यक केवल स्रोत URLs को ही संग्रहीत करें और परियोजना की अवधारण नीतियों का सम्मान करें।

प्रश्न: क्या सार्वजनिक TikTok डेटा का निर्यात करना कानूनी है?

कानूनीता क्षेत्राधिकार, उद्देश, पहुँच विधि, डेटा, और लागू शर्तों पर निर्भर करती है। निर्यातित क्षेत्रों को न्यूनतम करें और नियोजित उपयोग के लिए कानूनी सलाह प्राप्त करें।

स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।

सबसे लोकप्रिय लेख

सूची