पाइथन का उपयोग करके Quora प्रश्न और उत्तर स्क्रैप करने का तरीका

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

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

Quora डेटा को स्क्रैप क्यों करें?

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

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

प्लेटफॉर्म का उपयोग अनुसंधान, सामग्री विकास या AI समाधान बनाने में किया जा सकता है।

Quora वेब स्क्रैपिंग को समझना

वेब स्क्रैपिंग वेबसाइट या वेब पेज से जानकारी और डेटा निकालने के कार्य को संदर्भित करता है। यह बहुत सारी जानकारी इकट्ठा करने और उसे CSV फाइल जैसे एक संगठित संरचना में परिवर्तित करने का एक आधुनिक तरीका है।

वेब स्क्रैपिंग Quora प्लेटफॉर्म हमें क्या देता है:

  • स्वयं प्रश्न।
  • कुछ Quora पेजों से संबंधित लिंक।
  • अब तक के उत्तरों और प्रश्नों की संख्या।
  • उत्तर देने वाले लोग।
  • वे तारीखें जब वे प्रकाशित किए गए थे।

इस प्रकार, Quora डेटा स्क्रैपिंग उपयोगकर्ता भागीदारी, महत्व और विभिन्न प्रश्नों की लोकप्रियता के साथ-साथ उन्हें मिलने वाले उत्तरों पर अंतर्दृष्टि देता है।

Quora स्क्रैपिंग के लिए आवश्यक उपकरण

Quora डेटा स्क्रैप करने के लिए पाइथन लाइब्रेरी का उपयोग किया जाता है। नीचे सबसे प्रासंगिक संसाधन दिए गए हैं जो आपको उस लक्ष्य को प्राप्त करने में सक्षम करेंगे:

  • BeautifulSoup — HTML पेजों को पार्स करने और वांछित जानकारी एकत्र करने के लिए।
  • Requests — हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल अनुरोधों को तैयार करने और वेब पेज प्राप्त करने के लिए।
  • Selenium — ब्राउज़र ऑटोमेशन के साथ-साथ गतिशील रूप से उत्पन्न सामग्री को कैप्चर करने के लिए।

ये लाइब्रेरी वेब पेजों के साथ इंटरैक्ट करना और Quora से बिना किसी प्रयास के जानकारी एकत्र करना संभव बनाती हैं।

एक Quora स्क्रैपिंग पाइथन स्क्रिप्ट का निर्माण

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

चरण 1: अपना पाइथन प्रोजेक्ट वातावरण स्थापित करना

स्क्रैपिंग से पहले काम करने के वातावरण को तैयार करना चाहिए:

  1. आधिकारिक पेज से पाइथन डाउनलोड और इंस्टॉल करें।
  2. अपनी उपयोग में आने वाली लाइब्रेरी को विभाजित करने के लिए एक वर्चुअल वातावरण स्थापित करें।
    
    python -m venv quora_scraper
    source quora_scraper/bin/activate  # MacOS और Linux के लिए
    quora_scraper\Scripts\activate     # Windows के लिए
    
    

चरण 2: आवश्यक पाइथन लाइब्रेरी स्थापित करना

इस चरण में वेब स्क्रैपिंग के लिए आवश्यक लाइब्रेरी स्थापित करें:


pip install requests beautifulsoup4

ये इंटरफेस HTTP अनुरोधों को प्रेषित करने और बाद में प्राप्त HTML डेटा का विश्लेषण करने के लिए आवश्यक हैं।

चरण 3: Quora को अनुरोध भेजना

एक निश्चित API को कॉल करने और HTML पेज वापस पाने के लिए, हम Requests लाइब्रेरी का उपयोग करेंगे। यह सहज है और काम बहुत जल्दी कर देता है।


url = "https://www.quora.com/How-do-you-open-your-own-company"
response = requests.get(url)

चरण 4: HTML प्रतिक्रिया का पार्सिंग

पाइथन का उपयोग करने के लिए, Quora उत्तरों को स्क्रैप करने के लिए हमें BeautifulSoup नामक एक और लाइब्रेरी की आवश्यकता होगी। इसे इस प्रकार इंस्टॉल करें:


soup = BeautifulSoup(response.text, "lxml")
question = soup.find(class_='q-box qu-userSelect--text')

चरण 5: Quora प्रश्न और उत्तरों को निकालना

प्रश्नों और उत्तरों को निकालने के लिए, आपको केवल आवश्यक HTML टैग ढूंढने की आवश्यकता है जिसमें ये विवरण हैं। आइए एक उदाहरण लें:


text_of_answers = []
for answer_id in range(6):
   answers = soup.find_all(
       class_=f'q-box dom_annotate_question_answer_item_{answer_id} qu-borderAll qu-borderColor--raised qu-boxShadow--small qu-mb--small qu-bg--raised')

   for answer in answers:
       text = answer.find('p', class_='q-text qu-display--block qu-wordBreak--break-word qu-textAlign--start')
       text_of_answers.append(text)

चरण 6: कई पेजों के लिए पेजिनेशन का प्रबंधन

Quora में आमतौर पर बहुत सारे उत्तर होते हैं और अक्सर आपको सब कुछ देखने के लिए पेज को बहुत स्क्रॉल करने की आवश्यकता होती है। इसके लिए हम वेबसाइट को स्वचालित करने के लिए Selenium का उपयोग करेंगे।

नीचे Selenium कैसे सेट करें और अपनी पहचान को बेहतर छिपाने के लिए प्रॉक्सी का उपयोग करें:


from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver

chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')

chrome_options.add_argument("--headless")

driver = wiredriver.Chrome(options=chrome_options)

Selenium में सब कुछ सेट करने के बाद, आपको बस एक HTTP अनुरोध करने की आवश्यकता है, और फिर नीचे स्क्रॉल करते रहें और इन डेटा टुकड़ों को कैप्चर करें:


url = "https://www.quora.com/How-do-you-open-your-own-company"
driver.execute_script('window.scrollBy(0, 1000)')

driver.get(url)

चरण 7: स्क्रैप किए गए डेटा को कुशलतापूर्वक स्टोर करना

जब आप डेटा एकत्र करना समाप्त कर लेते हैं, तो आप उन्हें ऐसे तरीके से रखना चाहते हैं जिससे बाद में विश्लेषण करना आसान हो। ऐसा करने का सबसे अच्छा तरीका है कि उन्हें JSON प्रारूप में रखें, क्योंकि यह सबसे अधिक उपयोग किया जाने वाला है।


with open(f'quora_data.json', 'w', encoding='utf-8') as json_file:
   json.dump(text_of_answers, json_file, ensure_ascii=False, indent=4)

चरण 8: डेटा को CSV या JSON प्रारूप में निर्यात करना

हमने डेटा को JSON में सहेजा, लेकिन कुछ मामलों में एक ही समय में एक से अधिक प्रारूप में ऐसा करना वांछनीय हो सकता है। तो यहां आपके पास एक फ़ंक्शन है जो ठीक वही करता है:


def export_data(data, csv_filename="quora_data.csv", json_filename="quora_data.json"):
    save_to_csv(data, csv_filename)
    save_to_json(data, json_filename)

export_data(text_of_answers)

चरण 9: दर रीति और ब्लॉकिंग मुद्दों का प्रबंधन

Quora के पास स्वचालित डेटा स्क्रैपिंग के खिलाफ कुछ बचाव हैं, जैसे कि Quora को बहुत सारे अनुरोध भेजने का प्रयास करने से आपके IP पते को काट दिया जाएगा। हालांकि, इसके आसपास कुछ तरीके हैं।

  1. अगला अनुरोध भेजने से पहले कुछ समय जोड़ना।

    यह मानव व्यवहार का बुनियादी अनुकरण है जो अनुरोध भेजे जाने पर कुछ प्रकार का लैग जोड़ता है।

    
    import time
    import random
    
    def random_delay():
        time.sleep(random.uniform(2, 5))
    
    

    ब्लॉक न होने की संभावना बढ़ाने के लिए हर क्वेरी के बाद इस फ़ंक्शन को जोड़ें।

  2. प्रॉक्सी सर्वर का उपयोग करें।

    प्रॉक्सी सर्वर का उपयोग करके IP पते को ब्लॉक करने से आसानी से बचा जा सकता है। देखें कि इसका उपयोग Requests और Selenium के साथ कैसे किया जा सकता है।

    • requests:
      
      url = "https://www.quora.com/How-do-you-open-your-own-company" 
      
      
      
      proxy = 'LOGIN:PASSWORD@ADDRESS:PORT'
      proxies = {
         "http": f"http://{proxy}",
         "https": f"https://{proxy}",
      }
      
      response = requests.get(url, proxies=proxies)
      
      
    • Selenium:
      
      proxy_address = ""
      proxy_username = ""
      proxy_password = ""
      
      chrome_options = Options()
      chrome_options.add_argument(f'--proxy-server={proxy_address}')
      chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')
      
      chrome_options.add_argument("--headless")
      
      driver = wiredriver.Chrome(options=chrome_options)
      
      

चरण 10: सब कुछ एक साथ रखना

तो सभी चरणों को कवर करने के बाद, उन्हें जोड़ने और एक स्क्रिप्ट में डालने का समय आ गया है।


import json
from selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
from bs4 import BeautifulSoup

proxy_address = ""
proxy_username = ""
proxy_password = ""

chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy_address}')
chrome_options.add_argument(f'--proxy-auth={proxy_username}:{proxy_password}')

chrome_options.add_argument("--headless")

driver = wiredriver.Chrome(options=chrome_options)

url = "https://www.quora.com/How-do-you-open-your-own-company"
driver.execute_script('window.scrollBy(0, 1000)')

driver.get(url)

html = driver.page_source

soup = BeautifulSoup(html, "lxml")

question = soup.find(class_='q-box qu-userSelect--text')

# जवाब
text_of_answers = [{'question': question}]
for answer_id in range(6):
   answers = soup.find_all(
       class_=f'q-box dom_annotate_question_answer_item_{answer_id} qu-borderAll qu-borderColor--raised qu-boxShadow--small qu-mb--small qu-bg--raised')

   for answer in answers:
       text = answer.find('p', class_='q-text qu-display--block qu-wordBreak--break-word qu-textAlign--start').text
       text_of_answers.append({
           'answers': text,
       })

with open(f'Quora_data.json', 'w', encoding='utf-8') as json_file:
   json.dump(text_of_answers, json_file, ensure_ascii=False, indent=4)
   print(f"Quora_data.json")

निष्कर्ष

इस लेख में हमने पाइथन के साथ Quora स्क्रैपिंग के तरीकों पर चर्चा की है। ऐसी स्क्रिप्ट निर्मित की गई है जो उपयोगकर्ताओं को पेजिनेशन और विभिन्न प्रारूपों जैसे JSON और CSV में डेटा सहेजने के साथ कुछ प्रतिबंधों को ओवरराइड करने में सक्षम बनाती है।

बड़े पैमाने पर डेटा संग्रह के लिए, सबसे प्रभावी विधि Quora के API का उपयोग करना होगा। दूसरी ओर, यदि आप रणनीतिक रूप से BeautifulSoup या Selenium का उपयोग करने का चुनाव करते हैं, तो निरंतर प्रदर्शन के लिए प्रॉक्सी सर्वर का उपयोग आवश्यक है।

टिप्पणियाँ:

0 टिप्पणियाँ