ازگر کے ساتھ گوگل فنانس ڈیٹا کو کھرچنے کا طریقہ

تبصرے: 0

آج کے سرمایہ کار اور تجزیہ کار گوگل فنانس کی معلومات کا استعمال کر رہے ہیں کیونکہ یہ موجودہ اور درست ہے۔ ایسا لگتا ہے کہ گوگل فنانس ہر طرح کے موجودہ مالی اعداد و شمار رکھنے میں سب سے زیادہ ترجیحی جگہ ہے ، خاص طور پر اسٹاک کے ساتھ ساتھ انڈیکس اور مارکیٹ کے رجحانات کے ساتھ کیونکہ اس سے کمپنیوں کی مالی پیمائش کے بارے میں مزید تفصیلات ملتی ہیں۔ ازگر ویب سکریپنگ کے لئے بہترین زبان ہے۔ اس پوسٹ سے آپ کو گوگل فنانس سے ڈیٹا اکٹھا کرنے کا طریقہ سیکھنے میں مدد ملے گی تاکہ آپ کے پاس مالی تجزیہ کے تمام ضروری ٹولز مل سکیں۔

مطلوبہ لائبریریوں کو انسٹال کرنا

شروع کرنے سے پہلے ، یقینی بنائیں کہ آپ نے اپنے سسٹم پر ازگر انسٹال کیا ہے۔ آپ کو لائبریریوں کی بھی ضرورت ہوگی: ویب صفحات کے HTML مواد کو تجزیہ کرنے کے لئے HTTP درخواستیں اور LXML بنانے کے لئے درخواستیں۔ مطلوبہ لائبریریوں کو انسٹال کرنے کے لئے ، کمانڈ لائن پر درج ذیل کمانڈز کا استعمال کریں:

pip install requests
pip install lxml

اگلا ، ہم گوگل فنانس سے ڈیٹا نکالنے کے مرحلہ وار عمل کو تلاش کریں گے:

مرحلہ 1: HTML ڈھانچے کو سمجھنا

گوگل فنانس سے ڈیٹا کو کھرچنے کے ل we ، ہمیں مخصوص HTML عناصر کی نشاندہی کرنے کی ضرورت ہے جس میں وہ معلومات موجود ہیں جن میں ہم دلچسپی رکھتے ہیں:

  • عنوان: واقع ہے //div[@class="zzDege"]/text()
  • قیمت: at پر ملا //div[@class="YMlKec fxKbKc"]/text()
  • تاریخ: واقع ہے //div[@class="ygUjEc"]/text()

یہ ایکس پاتھ اظہار گوگل فنانس پیجز کے ایچ ٹی ایم ایل ڈھانچے سے متعلقہ ڈیٹا کو نیویگیٹ اور نکالنے کے لئے ہمارے رہنما کے طور پر کام کرے گا۔

عنوان:

1.png

قیمت:

2.png

تاریخ:

3.png

مرحلہ 2: کھرچنی فنکشن کو ترتیب دینا

جب کسی کھرچنی کو ترتیب دیں تو ، موثر اور محفوظ ڈیٹا اکٹھا کرنے کو یقینی بنانے کے ل کئی اہم پہلوؤں پر توجہ مرکوز کرنا بہت ضروری ہے۔

HTTP درخواست کرنا

گوگل فنانس ویب سائٹ سے ایچ ٹی ایم ایل مواد لانے کے ل we ، ہم درخواستوں کی لائبریری کو ملازمت دیں گے۔ یہ قدم ویب پیج کو لوڈ کرکے عمل کا آغاز کرتا ہے جہاں سے ہم ڈیٹا نکالنے کا ارادہ رکھتے ہیں۔

سکریپنگ میں صحیح ہیڈر استعمال کرنے کی اہمیت

جب ویب سکریپنگ ، خاص طور پر صارف ایجنٹ ہیڈر۔ ایک حقیقی براؤزر کی درخواست کی نقالی کرنے کے لئے ہیڈر کا استعمال ضروری ہے جو سائٹ کو آپ کے خودکار اسکرپٹ کی شناخت اور روکنے سے روک سکے گا۔ وہ اس بات کو یقینی بناتے ہیں کہ سرور درخواست کے بارے میں متعلقہ معلومات دے کر صحیح جواب دیتا ہے۔ مناسب ہیڈر غیر حاضر ، درخواست سے انکار کیا جاسکتا ہے یا سرور مکمل طور پر مختلف مواد کو واپس کرسکتا ہے یا ایسے حصوں میں مواد فراہم کرسکتا ہے جو ویب سکریپنگ سرگرمی کو محدود کرسکتے ہیں۔ لہذا ، ہیڈرز ترتیب دینے سے ویب سائٹ تک رسائی برقرار رکھنے میں مناسب مدد ملتی ہے اور اس بات کو یقینی بناتا ہے کہ کھرچنی صحیح ڈیٹا کو بازیافت کرے۔

import requests

# براؤزر کے دورے کی نقل کرنے کے لئے ہیڈر کی وضاحت کریں اور سرور کے ذریعہ مسدود ہونے سے گریز کریں
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',  # درخواست کے ہیڈر کو ٹریک نہ کریں
    'pragma': 'no-cache',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-arch': '"x86"',
    'sec-ch-ua-bitness': '"64"',
    'sec-ch-ua-full-version-list': '"Not/A)Brand";v="8.0.0.0", "Chromium";v="126.0.6478.114", "Google Chrome";v="126.0.6478.114"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-model': '""',
    'sec-ch-ua-platform': '"Linux"',
    'sec-ch-ua-platform-version': '"6.5.0"',
    'sec-ch-ua-wow64': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
}

# یوروونکسٹ پیرس (ای پی اے) ایکسچینج پر بی این پی پریباس (ٹکر بی این پی) کے لئے گوگل فنانس پیج کے یو آر ایل کی وضاحت کریں
url = "https://www.google.com/finance/quote/BNP:EPA?hl=en"

# HTTP کو مخصوص ہیڈرز کے ساتھ URL سے درخواست کریں
response = requests.get(url, headers=headers)

پراکسیوں کے استعمال کی اہمیت

جب گوگل فنانس یا کسی بھی ویب سائٹ کو پیمانے پر ختم کرتے ہو تو ، پراکسیوں کو استعمال کرنا بہت ضروری ہے۔ یہاں کیوں:

  • آئی پی پابندی سے پرہیز کریں: گوگل فنانس جیسی ویب سائٹیں اکثر آئی پی پتوں سے رسائی کو روکتی ہیں یا ان پر پابندی لگاتی ہیں جو مختصر مدت میں بہت زیادہ درخواستیں کرتی ہیں۔ پراکسی متعدد IP پتوں میں درخواستوں کو تقسیم کرنے میں مدد کرتے ہیں ، جس سے پتہ لگانے اور پابندی کا امکان کم ہوتا ہے۔
  • بڑھا ہوا رازداری: پراکسیوں کا استعمال گمنامی کی ایک پرت میں اضافہ کرتا ہے ، جس سے آپ کی شناخت اور ارادوں کی حفاظت ہوتی ہے جبکہ ڈیٹا کو ختم کرتے ہوئے۔
# پراکسی کی ترتیبات کی وضاحت کریں
proxies = {
    'http': 'http://your_proxy_address:port',
    'https': 'https://your_proxy_address:port',
}

# HTTP کو مخصوص ہیڈر اور پراکسیوں کے ساتھ URL سے درخواست کریں
response = requests.get(url, headers=headers, proxies=proxies)

LXML کے ساتھ HTML کو پارس کرنا

ایک بار جب ہم نے HTML مواد حاصل کرلیا تو ہمیں LXML لائبریری کا استعمال کرتے ہوئے اس کی تجزیہ کرنے کی ضرورت ہے۔ اس سے ہمیں HTML ڈھانچے کے ذریعے تشریف لے جانے اور جس ڈیٹا کو ہماری ضرورت ہے اسے نکالنے کی اجازت ہوگی:

LXML.HTML سے حاصل کردہ فنکشن کو HTML مواد کو کسی عنصر آبجیکٹ میں پارس کرنے کے لئے درآمد کیا جاتا ہے۔ اس کا طریقہ کار پارس کرتا ہے۔

from lxml.html import fromstring

#LXML کے منجمد طریقہ کار کا استعمال کرتے ہوئے ردعمل کے HTML مواد کی تجزیہ کریں
parser = fromstring(response.text)

XPath کے ساتھ ڈیٹا نکالنا

اب ، پارسڈ HTML درخت سے XPath کے اظہار کا استعمال کرتے ہوئے مخصوص ڈیٹا نکالیں:

اس عنوان سے تجزیہ کردہ HTML سے مالیاتی آلے کا عنوان بازیافت کرتا ہے۔ قیمت موجودہ اسٹاک کی قیمت کو بازیافت کرتی ہے۔ تاریخ تاریخ کو بازیافت کرتی ہے۔ فنانس_ڈیٹا ڈکشنری میں نکلا ہوا عنوان ، قیمت اور تاریخ ہوتی ہے۔ اس لغت کو ایک فہرست میں شامل کیا گیا ہے۔

# آؤٹ پٹ ڈیٹا کو اسٹور کرنے کی فہرست
finance_data_list = []

# مالیاتی آلے کا عنوان نکالنا
title = parser.xpath('//div[@class="zzDege"]/text()')[0]

# اسٹاک کی موجودہ قیمت کو نکالنا
price = parser.xpath('//div[@class="YMlKec fxKbKc"]/text()')[0]

# تاریخ نکالنا
date = parser.xpath('//div[@class="ygUjEc"]/text()')[0]

# نکالا ہوا ڈیٹا اسٹور کرنے کے لئے لغت بنانا
finance_data = {
    'title': title,
    'price': price,
    'date': date
}
# فنانس_ڈیٹا_ لسٹ میں ڈیٹا کو شامل کرنا
finance_data_list.append(finance_data)

ڈیٹا ہینڈلنگ اور اسٹوریج

سکریپڈ ڈیٹا کو سنبھالنے کے ل you ، آپ اس پر مزید کارروائی کرنا چاہتے ہیں یا اسے JSON جیسے ساختی شکل میں رکھنا چاہتے ہیں:

آؤٹ پٹ_فائل متغیر JSON فائل کا نام بتاتا ہے جہاں ڈیٹا کو محفوظ کیا جائے گا (فنانس_ڈیٹا.جسن)۔ اوپن (آؤٹ پٹ_فائل ، 'ڈبلیو') فائل کو لکھنے کے موڈ میں کھولتا ہے ، اور json.dump (فنانس_ڈیٹا_ لسٹ ، ایف ، انڈینٹ = 4) پڑھنے کی اہلیت کے لئے 4 اسپیس انڈینٹیشن کے ساتھ فائل میں فنانس_ڈیٹا_ لسٹ لکھتا ہے۔

# فنانس_ڈیٹا_ لسٹ کو JSON فائل میں محفوظ کریں
output_file = 'finance_data.json'
with open(output_file, 'w') as f:
    json.dump(finance_data_list, f, indent=4)

درخواستوں کو ہینڈل کرنے سے مستثنیات

ویب سائٹوں سے ڈیٹا کو ختم کرتے ہوئے ، آپ کے سکریپنگ اسکرپٹ کی وشوسنییتا اور مضبوطی کو یقینی بنانے کے لئے درخواست کے استثناء کو سنبھالنا ضروری ہے۔ یہ درخواستیں مختلف وجوہات کی بناء پر ناکام ہوسکتی ہیں جیسے نیٹ ورک کے مسائل ، سرور کی غلطیاں یا ٹائم آؤٹ۔ ازگر میں درخواستوں کی لائبریری اس قسم کے استثناء کو مؤثر طریقے سے سنبھالنے کا ایک طریقہ فراہم کرتی ہے جیسا کہ ذیل میں دکھایا گیا ہے:

try:
    # یو آر ایل کو گیٹ کی درخواست بھیجنا
    response = requests.get(url)

    # خراب ردعمل (4xx یا 5xx اسٹیٹس کوڈز) کے لئے ایک Httperror بلد کریں
    response.raise_for_status()

except requests.exceptions.HTTPError as e:
    # HTTP کی غلطیاں سنبھالیں (جیسے 404 ، 500 ، وغیرہ)
    print(f"HTTP error occurred: {e}")

except requests.exceptions.RequestException as e:
    # درخواست کے دوران پیش آنے والی کسی بھی دوسری مستثنیات کو سنبھالیں
    print(f"An error occurred: {e}")

کوشش بلاک کوڈ کو لپیٹ دیتا ہے جو مستثنیات کو بڑھا سکتا ہے۔ درخواستیں۔ گیٹ (یو آر ایل) گیٹ کی درخواست بھیجتی ہے۔ رسپانس۔ رائس_فور_سٹاٹس () ردعمل کی حیثیت کوڈ کی جانچ پڑتال کرتا ہے اور ناکام کوڈوں کے لئے ایک HTTPERROR اٹھاتا ہے۔ سوائے درخواستوں کے سوا۔ سوائے درخواستوں کے علاوہ

مکمل کوڈ

اب ، ہمارے کھرچنے والے فنکشن کو تخلیق کرنے کے لئے ہر چیز کو مربوط کریں جو گوگل فنانس کے متعدد یو آر ایل سے ڈیٹا لاتا ہے ، تجزیہ کرتا ہے اور نکالتا ہے۔

import requests
from lxml.html import fromstring
import json
import urllib3
import ssl

ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()


# کھرچنے کے لئے یو آر ایل کی فہرست
urls = [
    "https://www.google.com/finance/quote/BNP:EPA?hl=en",
    "https://www.google.com/finance/quote/SPY:NYSEARCA?hl=en",
    "https://www.google.com/finance/quote/SENSEX:INDEXBOM?hl=en"
]

# براؤزر کے دورے کی نقل کرنے کے لئے ہیڈر کی وضاحت کریں
headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-IN,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'priority': 'u=0, i',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-arch': '"x86"',
    'sec-ch-ua-bitness': '"64"',
    'sec-ch-ua-full-version-list': '"Not/A)Brand";v="8.0.0.0", "Chromium";v="126.0.6478.114", "Google Chrome";v="126.0.6478.114"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-model': '""',
    'sec-ch-ua-platform': '"Linux"',
    'sec-ch-ua-platform-version': '"6.5.0"',
    'sec-ch-ua-wow64': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
}

# پراکسی اختتامی نقطہ کی وضاحت کریں
proxies = {
    'http': 'http://your_proxy_address:port',
    'https': 'https://your_proxy_address:port',
}

# سکریپڈ ڈیٹا اسٹور کرنے کی فہرست
finance_data_list = []

# ہر یو آر ایل اور کھرچنے والے ڈیٹا کے ذریعے تکرار کریں
for url in urls:
    try:
        # یو آر ایل کو گیٹ کی درخواست بھیجنا
        response = requests.get(url, headers=headers, proxies=proxies, verify=False)
        
        # خراب ردعمل (4xx یا 5xx اسٹیٹس کوڈز) کے لئے ایک Httperror بلد کریں
        response.raise_for_status()
        
        # LXML کے منجمد طریقہ کار کا استعمال کرتے ہوئے ردعمل کے HTML مواد کی تجزیہ کریں
        parser = fromstring(response.text)
        
        # عنوان ، قیمت اور تاریخ نکالنا
        title = parser.xpath('//div[@class="zzDege"]/text()')[0]
        price = parser.xpath('//div[@class="YMlKec fxKbKc"]/text()')[0]
        date = parser.xpath('//div[@class="ygUjEc"]/text()')[0]
        
        # ذخیرہ شدہ ڈیٹا کو لغت میں اسٹور کریں
        finance_data = {
            'title': title,
            'price': price,
            'date': date
        }
        
        # لغت کو فہرست میں شامل کریں
        finance_data_list.append(finance_data)
    
    except requests.exceptions.HTTPError as e:
        # HTTP کی غلطیاں سنبھالیں (جیسے 404 ، 500 ، وغیرہ)
        print(f"HTTP error occurred for URL {url}: {e}")
    except requests.exceptions.RequestException as e:
        # درخواست کے دوران پیش آنے والی کسی بھی دوسری مستثنیات کو سنبھالیں
        print(f"An error occurred for URL {url}: {e}")

# فنانس_ڈیٹا_ لسٹ کو JSON فائل میں محفوظ کریں
output_file = 'finance_data.json'
with open(output_file, 'w') as f:
    json.dump(finance_data_list, f, indent=4)

print(f"Scraped data saved to {output_file}")

آؤٹ پٹ:

4.png

یہ گائیڈ گوگل فنانس کے اعداد و شمار کو کھرچنے کے بارے میں ایک جامع ٹیوٹوریل پیش کرتا ہے ، اس کے ساتھ ساتھ `LXML` اور` درخواستوں جیسے طاقتور لائبریریوں کے ساتھ ساتھ۔ اس میں مالی اعداد و شمار کے سکریپنگ کے لئے نفیس ٹولز بنانے کی بنیاد رکھی گئی ہے ، جس کا استعمال گہرائی سے مارکیٹ تجزیہ کرنے ، مدمقابل کی سرگرمیوں کی نگرانی ، یا باخبر سرمایہ کاری کے فیصلوں کی حمایت کرنے کے لئے استعمال کیا جاسکتا ہے۔

تبصرے:

0 تبصرے