إن الحصول على أحدث بيانات سوق الأوراق المالية باستخدام Python يوفر سيناريو استخدام رائعًا، سواء للتحليل أو تحليل الأسعار. في هذا الدرس، سنتعلم كيفية الحصول على بيانات سوق الأوراق المالية باستخدام Python Selenium.
بالنسبة لهذا الدرس المحدد، سنقوم بجلب بيانات صناعات BRITANNIA من NSE (البورصة الوطنية الهندية)، ولكن يمكن لكودنا أن يأخذ أسماء أي شركة أخرى كمدخلات ويجلب بياناتها أيضًا.
قد يعجبك أيضًا: جلب البيانات من صفحة ويب باستخدام Selenium [دليل كامل]
الحصول على بيانات سوق الأوراق المالية باستخدام بايثون
لنبدأ بالخطوات اللازمة لجلب بيانات سوق الأوراق المالية باستخدام Python Selenium. يمكنك تكرار الخطوات اللازمة لجلب البيانات للوصول إلى بيانات السوق المباشرة مباشرة على تطبيق Python الخاص بك.
الخطوة 1. استيراد الوحدات النمطية
للبدء، نحتاج إلى استيراد Selenium وWebdriver (Chrome) إلى الكود الخاص بنا.
1 2 | import selenium from selenium import webdriver |
الخطوة 2. أخذ المدخلات
سنأخذ رمز تداول الشركة (الرمز أو اسم السهم) كمدخل ونخزنه في متغير من المستخدم.
1 | company_name = input("Enter the company name: ") |
الخطوة 3. تهيئة Webdriver
أولاً، نحتاج إلى تنزيل WebDriver الخاص بمتصفح الويب الذي نريد أتمتته.
في حالتي، قمت بتنزيل نفس إصدار Chrome WebDriver مثل Google Chrome. وسنتحقق أيضًا مما إذا كان المستخدم قد أدخل اسم شركة أم لا. إذا كان لدينا اسم شركة، فسنقوم بتشغيل WebDriver.
1 2 | if(company_name != ''): driver = webdriver.Chrome('C://software/chromedriver.exe') |
لتهيئة برنامج تشغيل الويب، نحتاج إلى تمرير مسار برنامج تشغيل الويب الذي قمنا بتنزيله كما هو الحال في نظام الكمبيوتر الخاص بنا كما هو موضح أعلاه.
الخطوة 4. الدخول إلى الموقع
قبل أن نبدأ في استخراج البيانات من الموقع الإلكتروني، نحتاج أولاً إلى الوصول إلى الموقع الإلكتروني. ويمكننا القيام بذلك بمساعدة التابع get()
. وباستخدام عملية تجميع السلاسل، أضفنا قيمة متغير company_name إلى عنوان URL الأساسي لبيانات الأسهم على موقع NSE الإلكتروني.
نقوم بذلك لجلب بيانات الأسهم وفقًا للرمز المدخل. يمكن أن يكون اسم الشركة INFY أو TCS أو ITC أو RELIANCE أو BRITANNIA وما إلى ذلك، بشرط أن يكون رمزًا صالحًا للسهم.
1 | driver.get('https://www.nseindia.com/get-quotes/equity?symbol='+ company_name) |
في هذا البرنامج التعليمي، سنقوم بالوصول إلى صفحة الويب التي تحتوي على بيانات الأسهم الخاصة بـ Britannia.
الخطوة 5. ابحث عن العناصر المحددة التي نريد استخراجها
فيما يلي قيم الأسهم الحالية لشركة Britannia التي نريد استخراجها. لذا، سنقوم بفحص هذه القيم للعثور على عنصر HTML الخاص بها، باستخدام أداة الفحص في المتصفح.
نجد الكود HTML أدناه من موقع NSE لرمز BRITANIA.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <table id="priceInfoTable"> <td>Open</td> <td>Close*</td> <td>title="Volume Weighted Average Price">VWAP</td> <td>Lower Band</td> <td>Upper Band</td> <td>Price Band</td> <tr><td style="">3,605.15</td> <td>3,606.00</td> <td>3,618.30</td> <td>3,611.97</td> <td>3,244.65</td> <td>3,965.65</td> <td>No Band</td> </table> |
بعد الفحص وجدنا أن جميع القيم المطلوبة موجودة في المعرف المسمى priceInfoTable. لذا سنصل إلى هذه القيم باستخدام التابع get_element_by_id()
. نحتاج إلى تمرير المعرف المسمى priceInfoTable.
1 | britania_stock = driver.find_elements_by_id('priceInfoTable') |
الخطوة 6. تخزين المعلومات المستخرجة في قائمة
عندما نستخرج أي بيانات من صفحة ويب، لا يمكنك دائمًا فهمها عند العمل مع الكود. ولجعلها قابلة للاستخدام والقراءة، سنخزن هذه البيانات في قائمة.
1 2 3 | britania_list = [] for p in range(len(britania_stock)): britania_list.append(britania_stock[p].text) |
عندما نطبع هذه القائمة، فإنها ستعيد جميع القيم كعنصر واحد من القائمة. لذا، سنكتب حلقة for أخرى ونطبع هذه القيم في سطر جديد.
وأخيرًا، نستخدم driver.quit()
– وهو تابع لإغلاق جميع نوافذ المتصفح.
كود العمل الكامل هو أدناه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | from selenium import webdriver import time company_name = input("Enter the stock name: ") if(company_name != ''): driver = webdriver.Chrome('C://software/chromedriver.exe') driver.get('https://www.nseindia.com/get-quotes/equity?symbol='+ company_name) #to let the webpage load completely time.sleep(5) britania_stock = driver.find_elements_by_id('priceInfoTable') britania_list = [] for p in range(len(britania_stock)): britania_list.append(britania_stock[p].text) for i in britania_list: print(i,end="\n") driver.quit() |
سيكون الناتج هذا الكود:
يمكنك المضي قدمًا وتجربة نفس الأمر مع مواقع ويب أخرى، وربما حتى مواقع عملات مشفرة للحصول على أسعار حية لتطبيقك. لاحظ أن جمع البيانات لأغراض تجارية قد يكون مخالفًا لسياسات العديد من مواقع الويب، ويجب عليك التأكد من استخدام هذه البيانات للاستخدامات الشخصية فقط.
ليست هناك تعليقات:
إرسال تعليق