यह लेख Quora डेटा को निकालने के तरीके और यह क्यों उपयोगी हो सकता है, और इस कार्य को स्वचालित करने के लिए पाइथन का उपयोग कैसे किया जा सकता है, पर केंद्रित है। हम इस साइट से स्क्रैप करने के लिए आवश्यक मुख्य उपकरणों और लाइब्रेरी पर भी नज़र डालेंगे।
Quora दुनिया भर के लोगों द्वारा उपयोग किए जाने वाले सबसे लोकप्रिय प्रश्न-उत्तर वेबसाइटों में से एक है। यह विशेष रूप से संयुक्त राज्य अमेरिका, यूके, कनाडा, ऑस्ट्रेलिया और अन्य अंग्रेजी बोलने वाले देशों में प्रमुख है। Quora डेटा का विश्लेषण करते समय कई लाभ हैं, जैसे:
प्लेटफॉर्म का उपयोग अनुसंधान, सामग्री विकास या AI समाधान बनाने में किया जा सकता है।
वेब स्क्रैपिंग वेबसाइट या वेब पेज से जानकारी और डेटा निकालने के कार्य को संदर्भित करता है। यह बहुत सारी जानकारी इकट्ठा करने और उसे CSV फाइल जैसे एक संगठित संरचना में परिवर्तित करने का एक आधुनिक तरीका है।
वेब स्क्रैपिंग Quora प्लेटफॉर्म हमें क्या देता है:
इस प्रकार, Quora डेटा स्क्रैपिंग उपयोगकर्ता भागीदारी, महत्व और विभिन्न प्रश्नों की लोकप्रियता के साथ-साथ उन्हें मिलने वाले उत्तरों पर अंतर्दृष्टि देता है।
Quora डेटा स्क्रैप करने के लिए पाइथन लाइब्रेरी का उपयोग किया जाता है। नीचे सबसे प्रासंगिक संसाधन दिए गए हैं जो आपको उस लक्ष्य को प्राप्त करने में सक्षम करेंगे:
ये लाइब्रेरी वेब पेजों के साथ इंटरैक्ट करना और Quora से बिना किसी प्रयास के जानकारी एकत्र करना संभव बनाती हैं।
यह उपखंड एक स्क्रैपर के निर्माण को संबोधित करता है, जो एक चरणबद्ध ध्यान होगा। कार्यस्थल तैयार करें, आवश्यक लाइब्रेरी स्थापित करें, अनुरोध भेजने के लिए, HTML कोड को पार्स करने के लिए, और पुनर्प्राप्त जानकारी के साथ काम करने के लिए प्रक्रियाएं बनाएं।
स्क्रैपिंग से पहले काम करने के वातावरण को तैयार करना चाहिए:
python -m venv quora_scraper
source quora_scraper/bin/activate # MacOS और Linux के लिए
quora_scraper\Scripts\activate # Windows के लिए
इस चरण में वेब स्क्रैपिंग के लिए आवश्यक लाइब्रेरी स्थापित करें:
pip install requests beautifulsoup4
ये इंटरफेस HTTP अनुरोधों को प्रेषित करने और बाद में प्राप्त HTML डेटा का विश्लेषण करने के लिए आवश्यक हैं।
एक निश्चित API को कॉल करने और HTML पेज वापस पाने के लिए, हम Requests लाइब्रेरी का उपयोग करेंगे। यह सहज है और काम बहुत जल्दी कर देता है।
url = "https://www.quora.com/How-do-you-open-your-own-company"
response = requests.get(url)
पाइथन का उपयोग करने के लिए, Quora उत्तरों को स्क्रैप करने के लिए हमें BeautifulSoup नामक एक और लाइब्रेरी की आवश्यकता होगी। इसे इस प्रकार इंस्टॉल करें:
soup = BeautifulSoup(response.text, "lxml")
question = soup.find(class_='q-box qu-userSelect--text')
प्रश्नों और उत्तरों को निकालने के लिए, आपको केवल आवश्यक 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)
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)
जब आप डेटा एकत्र करना समाप्त कर लेते हैं, तो आप उन्हें ऐसे तरीके से रखना चाहते हैं जिससे बाद में विश्लेषण करना आसान हो। ऐसा करने का सबसे अच्छा तरीका है कि उन्हें 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)
हमने डेटा को 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)
Quora के पास स्वचालित डेटा स्क्रैपिंग के खिलाफ कुछ बचाव हैं, जैसे कि Quora को बहुत सारे अनुरोध भेजने का प्रयास करने से आपके IP पते को काट दिया जाएगा। हालांकि, इसके आसपास कुछ तरीके हैं।
यह मानव व्यवहार का बुनियादी अनुकरण है जो अनुरोध भेजे जाने पर कुछ प्रकार का लैग जोड़ता है।
import time
import random
def random_delay():
time.sleep(random.uniform(2, 5))
ब्लॉक न होने की संभावना बढ़ाने के लिए हर क्वेरी के बाद इस फ़ंक्शन को जोड़ें।
प्रॉक्सी सर्वर का उपयोग करके IP पते को ब्लॉक करने से आसानी से बचा जा सकता है। देखें कि इसका उपयोग Requests और Selenium के साथ कैसे किया जा सकता है।
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)
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)
तो सभी चरणों को कवर करने के बाद, उन्हें जोड़ने और एक स्क्रिप्ट में डालने का समय आ गया है।
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