कैसे एक अजगर स्क्रिप्ट का उपयोग करके ट्विटर डेटा को परिमार्जन करें

टिप्पणियाँ: 0

ट्विटर डेटा को स्क्रैप करने के लिए एक पायथन स्क्रिप्ट बनाना वास्तव में अंतर्दृष्टि को इकट्ठा करने के लिए उपयोगी है, जैसे कि उपयोगकर्ता समीक्षा या विशिष्ट विषयों के आसपास चर्चा, जो विपणन और अनुसंधान में बहुत सहायता कर सकती है। इस तरह की स्क्रिप्ट का उपयोग करके स्वचालन संग्रह प्रक्रिया को सुव्यवस्थित करता है, जिससे यह तेज और कुशल हो जाता है।

चरण 1: प्रतिष्ठान और आयात

वास्तविक कोड लिखना शुरू करने से पहले आपको 2 पैकेज स्थापित करना होगा। इन पैकेजों को स्थापित करने के लिए आपको पायथन पैकेज (PIP) के लिए एक पैकेज मैनेजर की भी आवश्यकता है। सौभाग्य से, एक बार जब आप अपनी मशीन पर पायथन स्थापित करते हैं, तो PIP भी स्थापित है। इन पैकेजों को स्थापित करने के लिए, आपको केवल अपने कमांड लाइन इंटरफ़ेस (CLI) में नीचे दिए गए कमांड को चलाने की आवश्यकता है।

pip install selenium-wire selenium undetected-chromedriver

एक बार स्थापना पूरी हो जाने के बाद, आपको इन पैकेजों को अपनी पायथन फ़ाइल में आयात करना होगा जैसा कि नीचे दिखाया गया है।

from seleniumwire import webdriver as wiredriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
import json
import undetected_chromedriver as uc
import random
Import ssl
  • सेलेनियमवायर: स्क्रैपिंग गतिविधियों के दौरान रुकावटों से बचने के लिए सीधे, परदे के पीछे कॉन्फ़िगर करने की क्षमता को जोड़कर सेलेनियम को बढ़ाता है।
  • सेलेनियम: ब्राउज़र क्रियाओं के अनुकरण के लिए एक्शनचेन और "कुंजियों" जैसे उपकरणों के साथ डेटा स्क्रैपिंग की सुविधा देता है, "बाय" एलिमेंट सर्च के लिए, "WebDriverwait", और "अपेक्षित_कॉन्डिशन" कंडीशन-आधारित निष्पादन के लिए।
  • अनिर्धारित क्रोमेड्राइवर: वेबसाइटों पर बॉट डिटेक्शन मैकेनिज्म को कम करने के लिए सेलेनियम वायर के साथ उपयोग के लिए क्रोमेड्राइवर को अलग करता है, अवरुद्ध जोखिमों को कम करता है।
  • समय, यादृच्छिक, JSON: JSON प्रारूप में संचालन समय और हैंडलिंग डेटा को प्रबंधित करने के लिए मानक पायथन लाइब्रेरी।

चरण 2: प्रॉक्सी इनिशियलाइज़ेशन

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

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

# प्रॉक्सी की सूची में उपयोगकर्ता नाम और पासवर्ड के साथ प्रॉक्सी सर्वर पता निर्दिष्ट करें
proxies = [
    "proxy_username:proxy_password@proxy_address:port_number",
]




# एक यादृच्छिक प्रॉक्सी प्राप्त करने के लिए कार्य
def get_proxy():
    return random.choice(proxies)


# प्रॉक्सी और प्रमाणीकरण के साथ क्रोम विकल्प सेट करें
chrome_options = Options()
chrome_options.add_argument("--headless")


proxy = get_proxy()
proxy_options = {
    "proxy": {
        "http": f"http://{proxy}",
        "https": f"https://{proxy}",
    }
}

चरण 3: एक्स/ट्विटर में लॉग इन करने के लिए कैसे

पायथन का उपयोग करके ट्विटर डेटा को प्रभावी ढंग से खुरचने के लिए, स्क्रिप्ट को उपयोगकर्ता नाम और पासवर्ड सहित ट्विटर अकाउंट के लिए एक्सेस क्रेडेंशियल्स की आवश्यकता होती है।

इसके अतिरिक्त, आपको एक खोज कीवर्ड निर्दिष्ट करना होगा। स्क्रिप्ट कमांड का उपयोग https://twitter.com/search?q={search_keyword}&src=typed_query&f=top का निर्माण करने के लिए करता है जो ट्विटर पर इस कीवर्ड की खोज को सक्षम करता है।

अगले चरण में Chromedriver का एक उदाहरण बनाना शामिल है, एक विकल्प के रूप में प्रॉक्सी विवरण को शामिल करना। यह सेटअप पृष्ठ को लोड करते समय एक विशिष्ट आईपी पते का उपयोग करने के लिए Chromedriver को निर्देशित करता है। इस सेटअप के बाद, खोज URL इन कॉन्फ़िगरेशन के साथ लोड किया गया है। एक बार पृष्ठ लोड हो जाने के बाद, आपको खोज परिणामों तक पहुंचने के लिए लॉग इन करना होगा। WebDriverwait का उपयोग करते हुए, स्क्रिप्ट यह सत्यापित करती है कि उपयोगकर्ता नाम प्रवेश क्षेत्र की उपस्थिति के लिए जाँच करके पृष्ठ पूरी तरह से लोड किया गया है। यदि यह क्षेत्र लोड करने में विफल रहता है, तो Chromedriver उदाहरण को समाप्त करना उचित है।

search_keyword = input("What topic on X/Twitter would you like to gather data on?\n").replace(' ', '%20')
constructed_url = f"https://twitter.com/search?q={search_keyword}&src=typed_query&f=top"


# अपना एक्स/ट्विटर उपयोगकर्ता नाम और पासवर्ड यहां प्रदान करें
x_username = "" 
x_password = ""


print(f'Opening {constructed_url} in Chrome...')


# अनिर्धारित क्रोम ड्राइवर के साथ एक WebDriver उदाहरण बनाएं
driver = uc.Chrome(options=chrome_options, seleniumwire_options=proxy_options)


driver.get(constructed_url)


try:
    element = WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.XPATH, "//div[@class='css-175oi2r r-1mmae3n r-1e084wir-13qz1uu']"))
    )
except Exception as err:
    print(f'WebDriver Wait Error: Most likely Network TimeOut: Details\n{err}')
    driver.quit()


#दाखिल करना
if element:
    username_field = driver.find_element(By.XPATH, "//input[@class='r-30o5oe r-1dz5y72 r-13qz1uu r-1niwhzg r-17gur6a r-1yadl64 r-deolkf r-homxoj r-poiln3 r-7cikom r-1ny4l3l r-t60dpp r-fdjqy7']")
    username_field.send_keys(x_username)
    username_field..send_keys(Keys.ENTER)


    password_field = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.XPATH, "//input[@class='r-30o5oe r-1dz5y72 r-13qz1uu r-1niwhzg r-17gur6a r-1yadl64 r-deolkf r-homxoj r-poiln3 r-7cikom r-1ny4l3l r-t60dpp r-fdjqy7']"))
    )
    password_field.send_keys(x_password)
    password_field.send_keys(Keys.ENTER)


    print("Sign In Successful...\n")


    sleep(10)

चरण 4: शीर्ष परिणाम निकालना

शब्दकोशों के प्रारूप में सभी gleaned डेटा को व्यवस्थित रूप से संग्रहीत करने के लिए एक सूची चर, परिणाम बनाएं। इसके बाद, प्रत्येक ट्वीट के लिए डेटा का खजाना एकत्र करने के लिए स्क्रैप () नामक एक फ़ंक्शन स्थापित करें, जिसमें डिस्प्ले नाम, उपयोगकर्ता नाम, पोस्ट कंटेंट और लाइक और इंप्रेशन जैसे मैट्रिक्स जैसे महत्वपूर्ण विवरण शामिल हैं।

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

जब हम घमंड संख्या/मेट्रिक्स को खुरचाते हैं, तो उन्हें संख्या के रूप में नहीं के रूप में वापस कर दिया जाता है। फिर, हमें convert_to_numeric () का उपयोग करके स्ट्रिंग्स को संख्याओं में परिवर्तित करने की आवश्यकता है, इसलिए परिणाम को छापों द्वारा आयोजित किया जा सकता है।

results = []


# खरोंच
def scrape():
   display_names = driver.find_elements(By.XPATH,
                                        '//*[@class="css-175oi2r r-1wbh5a2 r-dnmrzs r-1ny4l3l r-1awozwy r-18u37iz"]/div[1]/div/a/div/div[1]/span/span')
   usernames = driver.find_elements(By.XPATH,
                                    '//*[@class="css-175oi2r r-1wbh5a2 r-dnmrzs r-1ny4l3l r-1awozwy r-18u37iz"]/div[2]/div/div[1]/a/div/span')
   posts = driver.find_elements(By.XPATH,
                                '//*[@class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1udh08x r-bcqeeo r-1ttztb7 r-qvutc0 r-37j5jr r-a023e6 r-rjixqe r-16dba41 r-bnwqim"]/span')
   comments = driver.find_elements(By.XPATH,
                                   '//*[@class="css-175oi2r r-1kbdv8c r-18u37iz r-1wtj0ep r-1ye8kvj r-1s2bzr4"]/div[1]/button/div/div[2]/span/span/span')
   retweets = driver.find_elements(By.XPATH,
                                   '//*[@class="css-175oi2r r-1kbdv8c r-18u37iz r-1wtj0ep r-1ye8kvj r-1s2bzr4"]/div[2]/button/div/div[2]/span/span/span')
   likes = driver.find_elements(By.XPATH,
                                '//*[@class="css-175oi2r r-1kbdv8c r-18u37iz r-1wtj0ep r-1ye8kvj r-1s2bzr4"]/div[3]/button/div/div[2]/span/span/span')
   impressions = driver.find_elements(By.XPATH,
                                      '//*[@class="css-175oi2r r-1kbdv8c r-18u37iz r-1wtj0ep r-1ye8kvj r-1s2bzr4"]/div[4]/a/div/div[2]/span/span/span')

   min_length = min(len(display_names), len(usernames), len(posts), len(comments), len(retweets), len(likes),
                    len(impressions))

   for each in range(min_length):
       results.append({
           'Username': usernames[each].text,
           'displayName': display_names[each].text,
           'Post': posts[each].text.rstrip("Show more"),
           'Comments': 0 if comments[each].text == "" else convert_to_numeric(comments[each].text),
           'Retweets': 0 if retweets[each].text == "" else convert_to_numeric(retweets[each].text),
           'Likes': 0 if likes[each].text == "" else convert_to_numeric(likes[each].text),
           'Impressions': 0 if impressions[each].text == "" else convert_to_numeric(impressions[each].text)
       })


def reorder_json_by_impressions(json_data):
   # अवरोही क्रम में 'इंप्रेशन' के आधार पर JSON सूची में इन-प्लेस को क्रमबद्ध करें
   json_data.sort(key=lambda x: int(x['Impressions']), reverse=True)


def organize_write_data(data: dict):
   output = json.dumps(data, indent=2, ensure_ascii=False).encode("ascii", "ignore").decode("utf-8")
   try:
       with open("result.json", 'w', encoding='utf-8') as file:
           file.write(output)
   except Exception as err:
       print(f"Error encountered: {err}")


def convert_to_numeric(value):
   multipliers = {'K': 10 ** 3, 'M': 10 ** 6, 'B': 10 ** 9}

   try:
       if value[-1] in multipliers:
           return int(float(value[:-1]) * multipliers[value[-1]])
       else:
           return int(value)
   except ValueError:
       # उस मामले को संभालें जहां रूपांतरण विफल हो जाता है
       return None

चरण 5: डेटा का आयोजन

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

def reorder_json_by_impressions(json_data):
    # अवरोही क्रम में 'इंप्रेशन' के आधार पर JSON सूची में इन-प्लेस को क्रमबद्ध करें
    json_data.sort(key=lambda x:int(x['Impressions']), reverse=True)

एक JSON फ़ाइल को लिखें

एक JSON फ़ाइल एकत्र किए गए सभी डेटा की कल्पना करने का सबसे अच्छा तरीका है। JSON फ़ाइल में लिखना सिर्फ पायथन में किसी अन्य फ़ाइल को लिखने जैसा है। केवल अंतर यह है कि हमें फ़ाइल को लिखे जाने से पहले डेटा को ठीक से प्रारूपित करने के लिए JSON मॉड्यूल की आवश्यकता है।

यदि कोड सही तरीके से चला, तो आपको फ़ाइल संरचना में एक परिणाम। Json फ़ाइल देखना चाहिए और इसमें नीचे दिए गए अनुभाग में दिखाया गया परिणाम होना चाहिए।

def organize_write_data(data:dict):
    output = json.dumps(data, indent=2, ensure_ascii=False).encode("ascii", "ignore").decode("utf-8")
    try:
        with open("result.json", 'w', encoding='utf-8') as file:
            file.write(output)
    except Exception as err:
        print(f"Error encountered: {err}") 

पेजिनेशन

कोड का निष्पादन शुरू करने के लिए, हमें डेटा स्क्रैपिंग शुरू करने के लिए अपने कार्यों को क्रमिक रूप से कॉल करना होगा। हम विभिन्न सेलेनियम क्रियाओं को सुविधाजनक बनाने के लिए सेलेनियम के भीतर एक्शनचेन मॉड्यूल का उपयोग करके एक संदर्भ बनाते हैं। यह मॉड्यूल पृष्ठ पर नीचे स्क्रॉलिंग का अनुकरण करने के लिए महत्वपूर्ण साबित होता है।

पहले दौर में वर्तमान में लोड किए गए पृष्ठ से डेटा स्क्रैप करना शामिल है। इसके बाद, एक लूप शुरू किया जाता है, पांच बार पुनरावृत्त होता है, जिसके दौरान पृष्ठ को स्क्रॉल किया जाता है, इसके बाद अगले स्क्रैपिंग पुनरावृत्ति से पहले पांच-सेकंड का ठहराव होता है।

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

actions = ActionChains(driver)
for i in range(5):
    actions.send_keys(Keys.END).perform()
    sleep(5)
    scrape()


reorder_json_by_impressions(results)
organize_write_data(results)


print(f"Scraping Information on {search_keyword} is done.")


driver.quit()

पूर्ण कोड

from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
import json
import undetected_chromedriver as uc
import random
import ssl

ssl._create_default_https_context = ssl._create_stdlib_context


search_keyword = input("What topic on X/Twitter would you like to gather data on?\n").replace(' ', '%20')
constructed_url = f"https://twitter.com/search?q={search_keyword}&src=typed_query&f=top"

# provide your X/Twitter username and password here
x_username = ""
x_password = ""

print(f'Opening {constructed_url} in Chrome...')

# प्रॉक्सी की सूची में उपयोगकर्ता नाम और पासवर्ड के साथ प्रॉक्सी सर्वर पता निर्दिष्ट करें
proxies = [
   "USERNAME:PASSWORD@IP:PORT",
]


# एक यादृच्छिक प्रॉक्सी प्राप्त करने के लिए कार्य
def get_proxy():
   return random.choice(proxies)


# प्रॉक्सी और प्रमाणीकरण के साथ क्रोम विकल्प सेट करें
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--ignore-ssl-errors')

proxy = get_proxy()
proxy_options = {
   "proxy": {
       "http": f"http://{proxy}",
       "https": f"https://{proxy}",
   }
}

# अनिर्धारित क्रोम ड्राइवर के साथ एक WebDriver उदाहरण बनाएं
driver = uc.Chrome(options=chrome_options, seleniumwire_options=proxy_options)

driver.get(constructed_url)

try:
   element = WebDriverWait(driver, 20).until(
       EC.presence_of_element_located((By.XPATH, "//div[@class='css-175oi2r r-1mmae3n r-1e084wi r-13qz1uu']"))
   )
except Exception as err:
   print(f'WebDriver Wait Error: Most likely Network TimeOut: Details\n{err}')
   driver.quit()

# दाखिल करना
if element:
   username_field = driver.find_element(By.XPATH,
                                        "//input[@class='r-30o5oe r-1dz5y72 r-13qz1uu r-1niwhzg r-17gur6a r-1yadl64 r-deolkf r-homxoj r-poiln3 r-7cikom r-1ny4l3l r-t60dpp r-fdjqy7']")
   username_field.send_keys(x_username)
   username_field.send_keys(Keys.ENTER)

   password_field = WebDriverWait(driver, 10).until(
       EC.presence_of_element_located((By.XPATH,
                                       "//input[@class='r-30o5oe r-1dz5y72 r-13qz1uu r-1niwhzg r-17gur6a r-1yadl64 r-deolkf r-homxoj r-poiln3 r-7cikom r-1ny4l3l r-t60dpp r-fdjqy7']"))
   )
   password_field.send_keys(x_password)
   password_field.send_keys(Keys.ENTER)

   print("Sign In Successful...\n")

   sleep(10)

results = []


# खरोंच
def scrape():
   display_names = driver.find_elements(By.XPATH,
                                        '//*[@class="css-175oi2r r-1wbh5a2 r-dnmrzs r-1ny4l3l r-1awozwy r-18u37iz"]/div[1]/div/a/div/div[1]/span/span')
   usernames = driver.find_elements(By.XPATH,
                                    '//*[@class="css-175oi2r r-1wbh5a2 r-dnmrzs r-1ny4l3l r-1awozwy r-18u37iz"]/div[2]/div/div[1]/a/div/span')
   posts = driver.find_elements(By.XPATH,
                                '//*[@class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1udh08x r-bcqeeo r-1ttztb7 r-qvutc0 r-37j5jr r-a023e6 r-rjixqe r-16dba41 r-bnwqim"]/span')
   comments = driver.find_elements(By.XPATH,
                                   '//*[@class="css-175oi2r r-1kbdv8c r-18u37iz r-1wtj0ep r-1ye8kvj r-1s2bzr4"]/div[1]/button/div/div[2]/span/span/span')
   retweets = driver.find_elements(By.XPATH,
                                   '//*[@class="css-175oi2r r-1kbdv8c r-18u37iz r-1wtj0ep r-1ye8kvj r-1s2bzr4"]/div[2]/button/div/div[2]/span/span/span')
   likes = driver.find_elements(By.XPATH,
                                '//*[@class="css-175oi2r r-1kbdv8c r-18u37iz r-1wtj0ep r-1ye8kvj r-1s2bzr4"]/div[3]/button/div/div[2]/span/span/span')
   impressions = driver.find_elements(By.XPATH,
                                      '//*[@class="css-175oi2r r-1kbdv8c r-18u37iz r-1wtj0ep r-1ye8kvj r-1s2bzr4"]/div[4]/a/div/div[2]/span/span/span')

   min_length = min(len(display_names), len(usernames), len(posts), len(comments), len(retweets), len(likes),
                    len(impressions))

   for each in range(min_length):
       results.append({
           'Username': usernames[each].text,
           'displayName': display_names[each].text,
           'Post': posts[each].text.rstrip("Show more"),
           'Comments': 0 if comments[each].text == "" else convert_to_numeric(comments[each].text),
           'Retweets': 0 if retweets[each].text == "" else convert_to_numeric(retweets[each].text),
           'Likes': 0 if likes[each].text == "" else convert_to_numeric(likes[each].text),
           'Impressions': 0 if impressions[each].text == "" else convert_to_numeric(impressions[each].text)
       })


def reorder_json_by_impressions(json_data):
   # अवरोही क्रम में 'इंप्रेशन' के आधार पर JSON सूची में इन-प्लेस को क्रमबद्ध करें
   json_data.sort(key=lambda x: int(x['Impressions']), reverse=True)


def organize_write_data(data: dict):
   output = json.dumps(data, indent=2, ensure_ascii=False).encode("ascii", "ignore").decode("utf-8")
   try:
       with open("result.json", 'w', encoding='utf-8') as file:
           file.write(output)
   except Exception as err:
       print(f"Error encountered: {err}")


def convert_to_numeric(value):
   multipliers = {'K': 10 ** 3, 'M': 10 ** 6, 'B': 10 ** 9}

   try:
       if value[-1] in multipliers:
           return int(float(value[:-1]) * multipliers[value[-1]])
       else:
           return int(value)
   except ValueError:
       # उस मामले को संभालें जहां रूपांतरण विफल हो जाता है
       return None


actions = ActionChains(driver)
for i in range(5):
   actions.send_keys(Keys.END).perform()
   sleep(5)
   scrape()

reorder_json_by_impressions(results)
organize_write_data(results)

print(f"Scraping Information on {search_keyword} is done.")

driver.quit()

अंतिम परिणाम

यहाँ JSON फ़ाइल को स्क्रैपिंग के बाद क्या पसंद होना चाहिए:

[
  {
    "Username": "@LindaEvelyn_N",
    "displayName": "Linda Evelyn Namulindwa",
    "Post": "Still getting used to Ugandan local foods so I had Glovo deliver me a KFC Streetwise Spicy rice meal (2 pcs of chicken & jollof rice at Ugx 18,000)\n\nNot only was it fast but it also accepts all payment methods.\n\n#GlovoDeliversKFC\n#ItsFingerLinkingGood",
    "Comments": 105,
    "Retweets": 148,
    "Likes": 1500,
    "Impressions": 66000
  },
  {
    "Username": "@GymCheff",
    "displayName": "The Gym Chef",
    "Post": "Delicious High Protein KFC Zinger Rice Box!",
    "Comments": 1,
    "Retweets": 68,
    "Likes": 363,
    "Impressions": 49000
  }
]

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

टिप्पणियाँ:

0 टिप्पणियाँ