یہ مضمون اس پر توجہ مرکوز کرتا ہے کہ Quora ڈیٹا کو کیسے نکالا جائے اور یہ کیوں مفید ہو سکتا ہے، اور اس کام کو خودکار بنانے کے لیے پائتھن کا استعمال کیسے کیا جا سکتا ہے۔ ہم اس سائٹ سے اسکریپنگ کے لیے درکار اہم ٹولز اور لائبریریز پر بھی نظر ڈالیں گے۔
Quora دنیا بھر کے لوگوں کے استعمال کرنے والی سب سے مقبول سوال و جواب کی ویب سائٹوں میں سے ایک ہے۔ یہ خاص طور پر یو ایس اے، یوکے، کینیڈا، آسٹریلیا اور دیگر انگریزی بولنے والے ممالک میں نمایاں ہے۔ Quora ڈیٹا کا تجزیہ کرتے وقت متعدد فوائد ہیں، جیسے:
اس پلیٹ فارم کو تحقیق، مواد کی ترقی یا AI حل بنانے میں استعمال کیا جا سکتا ہے۔
ویب اسکریپنگ ویب سائٹ یا ویب پیج سے معلومات اور ڈیٹا نکالنے کے عمل کو کہتے ہیں۔ یہ بہت ساری معلومات جمع کرنے اور اسے CSV فائل جیسے منظم ڈھانچے میں تبدیل کرنے کا ایک جدید طریقہ ہے۔
ویب اسکریپنگ Quora پلیٹ فارم ہمیں کیا دیتا ہے:
اس طرح، Quora ڈیٹا اسکریپنگ صارف کی شرکت، اہمیت، اور مختلف سوالات کی مقبولیت کے ساتھ ساتھ انہیں ملنے والے جوابات کی بصیرت فراہم کرتی ہے۔
Quora ڈیٹا اسکریپ کرنے کے لیے پائتھن لائبریریز استعمال کی جاتی ہیں۔ ذیل میں سب سے متعلقہ وسائل ہیں جو آپ کو اس مقصد کو حاصل کرنے کے قابل بنائیں گے:
یہ لائبریریاں ویب پیجز کے ساتھ تعامل کرنا اور Quora سے آسانی سے معلومات جمع کرنا ممکن بناتی ہیں۔
یہ ذیلی حصہ اسکریپر کی تعمیر کا احاطہ کرتا ہے، جو مرحلہ وار توجہ ہوگا۔ ورک اسپیس تیار کریں، ضروری لائبریریاں انسٹال کریں، درخواستیں بھیجنے کے لیے، HTML کوڈ کو پارس کرنے کے لیے، اور حاصل کردہ معلومات کے ساتھ کام کرنے کے لیے طریقہ کار بنائیں۔
اسکریپنگ سے پہلے کام کرنے کا ماحول تیار کرنا چاہیے:
python -m venv quora_scraper
source quora_scraper/bin/activate # For MacOS and Linux
quora_scraper\Scripts\activate # For 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 ایڈریس کو کاٹ دیا جائے گا۔ تاہم، اس کے آس پاس کچھ طریقے ہیں۔
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)
تو تمام مراحل کا احاطہ کرنے کے بعد، انہیں جوڑنے اور ایک اسکرپٹ میں ڈالنے کا وقت ہے۔
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')
# Answers
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