आज के निवेशक और विश्लेषक Google वित्त जानकारी का उपयोग कर रहे हैं क्योंकि यह वर्तमान और सटीक है। Google वित्त सभी प्रकार के वर्तमान वित्तीय डेटा होने में सबसे पसंदीदा जगह है, विशेष रूप से शेयरों के लिए सूचकांकों और बाजार के रुझानों के साथ क्योंकि यह कंपनियों के वित्तीय मैट्रिक्स के बारे में अधिक जानकारी देता है। पायथन वेब स्क्रैपिंग के लिए सबसे अच्छी भाषा है। यह पोस्ट आपको यह जानने में मदद करेगी कि Google Finance से डेटा कैसे एकत्र किया जाए ताकि आपके पास सभी आवश्यक वित्तीय विश्लेषण उपकरण हो सकें।
शुरू करने से पहले, सुनिश्चित करें कि आपने अपने सिस्टम पर पायथन स्थापित किया है। आपको पुस्तकालयों की भी आवश्यकता होगी: वेब पेजों की HTML सामग्री को पार्स करने के लिए HTTP अनुरोध और LXML बनाने के लिए अनुरोध। आवश्यक पुस्तकालयों को स्थापित करने के लिए, कमांड लाइन पर निम्न कमांड का उपयोग करें:
pip install requests
pip install lxml
अगला, हम Google वित्त से डेटा निकालने की चरण-दर-चरण प्रक्रिया का पता लगाएंगे:
Google वित्त से डेटा को परिमार्जन करने के लिए, हमें उन विशिष्ट HTML तत्वों की पहचान करने की आवश्यकता है जिनमें हम जिस जानकारी में रुचि रखते हैं, उसमें शामिल हैं:
ये XPath अभिव्यक्तियाँ Google वित्त पृष्ठों की HTML संरचना से प्रासंगिक डेटा को नेविगेट करने और निकालने के लिए हमारे गाइड के रूप में काम करेंगे।
शीर्षक:
कीमत:
तारीख:
एक स्क्रैपर सेट करते समय, कुशल और सुरक्षित डेटा संग्रह सुनिश्चित करने के लिए कई महत्वपूर्ण पहलुओं पर ध्यान केंद्रित करना महत्वपूर्ण है।
Google वित्त वेबसाइट से HTML सामग्री प्राप्त करने के लिए, हम अनुरोध लाइब्रेरी को नियुक्त करेंगे। यह चरण वेबपेज को लोड करके प्रक्रिया शुरू करता है जिससे हम डेटा निकालने का इरादा रखते हैं।
वेब स्क्रैपिंग के दौरान सही हेडर का उपयोग करना वास्तव में महत्वपूर्ण है, विशेष रूप से उपयोगकर्ता-एजेंट हेडर। हेडर का उपयोग एक वास्तविक ब्राउज़र अनुरोध का अनुकरण करने में आवश्यक है जो साइट को आपकी स्वचालित स्क्रिप्ट को पहचानने और रोकने से रोक देगा। वे सुनिश्चित करते हैं कि सर्वर अनुरोध के बारे में प्रासंगिक जानकारी देकर सही तरीके से प्रतिक्रिया करता है। अनुपस्थित उचित हेडर, अनुरोध से इनकार किया जा सकता है या सर्वर पूरी तरह से अलग सामग्री वापस कर सकता है या उन भागों में सामग्री वितरित कर सकता है जो वेब स्क्रैपिंग गतिविधि को प्रतिबंधित कर सकते हैं। इसलिए, हेडर को उचित रूप से सेट करना वेबसाइट तक पहुंच बनाए रखने में मदद करता है और यह सुनिश्चित करता है कि स्क्रैपर सही डेटा को पुनः प्राप्त करता है।
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',
}
# Euronext पेरिस (EPA) एक्सचेंज पर BNP Paribas (टिकर BNP) के लिए Google वित्त पृष्ठ के URL को परिभाषित करें
url = "https://www.google.com/finance/quote/BNP:EPA?hl=en"
# HTTP को निर्दिष्ट हेडर के साथ URL से अनुरोध करें
response = requests.get(url, headers=headers)
Google वित्त या किसी भी वेबसाइट को स्केल करते समय, यह प्रॉक्सी का उपयोग करना महत्वपूर्ण है। उसकी वजह यहाँ है:
# प्रॉक्सी सेटिंग्स को परिभाषित करें
proxies = {
'http': 'http://your_proxy_address:port',
'https': 'https://your_proxy_address:port',
}
# HTTP को निर्दिष्ट हेडर और प्रॉक्सी के साथ URL से अनुरोध करें
response = requests.get(url, headers=headers, proxies=proxies)
एक बार जब हम HTML सामग्री प्राप्त कर लेते हैं, तो हमें LXML लाइब्रेरी का उपयोग करके इसे पार्स करने की आवश्यकता होती है। यह हमें HTML संरचना के माध्यम से नेविगेट करने और हमारे लिए आवश्यक डेटा निकालने की अनुमति देगा:
LXML.HTML से FromString फ़ंक्शन को एक तत्व ऑब्जेक्ट में HTML सामग्री को पार्स करने के लिए आयात किया जाता है। FromString Method Parses Response.text, वेब पेज से कच्चे HTML पहले से प्राप्त किया गया है, और पार्सर चर में संग्रहीत एक तत्व ऑब्जेक्ट को लौटाता है, जो पार्सड HTML ट्री की जड़ का प्रतिनिधित्व करता है।
from lxml.html import fromstring
# LXML के FromString विधि का उपयोग करके प्रतिक्रिया की HTML सामग्री को पार्स करें
parser = fromstring(response.text)
अब, पार्सड HTML ट्री से XPath अभिव्यक्तियों का उपयोग करके विशिष्ट डेटा निकालते हैं:
शीर्षक पार्सड HTML से वित्तीय साधन के शीर्षक को पुनः प्राप्त करता है। कीमत वर्तमान स्टॉक मूल्य को पुनः प्राप्त करती है। दिनांक तारीख को पुनः प्राप्त करता है। Finance_Data शब्दकोश में निकाले गए शीर्षक, मूल्य और तिथि शामिल हैं। इस शब्दकोश को एक सूची में जोड़ा गया है।
# आउटपुट डेटा स्टोर करने के लिए सूची
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
}
# Finant_data_list के लिए डेटा अपील
finance_data_list.append(finance_data)
स्क्रैप किए गए डेटा को संभालने के लिए, आप इसे आगे बढ़ाना चाह सकते हैं या इसे JSON जैसे संरचित प्रारूप में संग्रहीत कर सकते हैं:
Output_file चर JSON फ़ाइल का नाम निर्दिष्ट करता है जहां डेटा सहेजा जाएगा (Finance_data.json)। ओपन (आउटपुट_फाइल, 'डब्ल्यू') फाइल को राइट मोड में खोलता है, और json.dump (finance_data_list, f, indent = 4) पठनीयता के लिए 4-स्पेस इंडेंटेशन के साथ फ़ाइल को Finance_data_list लिखता है।
# JSON फ़ाइल में Finance_data_list सहेजें
output_file = 'finance_data.json'
with open(output_file, 'w') as f:
json.dump(finance_data_list, f, indent=4)
वेबसाइटों से डेटा को स्क्रैप करते समय, आपकी स्क्रैपिंग स्क्रिप्ट की विश्वसनीयता और मजबूती सुनिश्चित करने के लिए अनुरोध अपवादों को संभालना महत्वपूर्ण है। ये अनुरोध विभिन्न कारणों से विफल हो सकते हैं जैसे कि नेटवर्क मुद्दे, सर्वर त्रुटियां या टाइमआउट। पायथन में अनुरोध पुस्तकालय इस प्रकार के अपवादों को प्रभावी ढंग से संभालने का एक तरीका प्रदान करता है जैसा कि नीचे दिखाया गया है:
try:
# URL के लिए एक अनुरोध भेजना
response = requests.get(url)
# खराब प्रतिक्रियाओं के लिए एक Httperror बढ़ाएं (4xx या 5xx स्थिति कोड)
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}")
कोशिश ब्लॉक उस कोड को लपेटता है जो अपवादों को बढ़ा सकता है। अनुरोध .get (URL) एक GET अनुरोध भेजता है। Response.raise_for_status () प्रतिक्रिया स्थिति कोड की जांच करता है और असफल कोड के लिए एक Httperror बढ़ाता है। EXCEFACTS.Exceptions.httperror के रूप में E को छोड़कर: Httperror अपवादों को पकड़ता है और त्रुटि संदेश को प्रिंट करता है। EXCEPTIONS.Exception.RequestException e के रूप में: अन्य अपवादों (जैसे, नेटवर्क त्रुटियों, टाइमआउट) को पकड़ता है और त्रुटि संदेश को प्रिंट करता है।
अब, आइए हमारे स्क्रैपर फ़ंक्शन को बनाने के लिए सब कुछ एकीकृत करें जो कई Google वित्त URL से डेटा प्राप्त करते हैं, पार्स, और डेटा निकालते हैं:
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()
# खुरचने के लिए URL की सूची
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 = []
#प्रत्येक URL और स्क्रैप डेटा के माध्यम से पुनरावृत्ति करें
for url in urls:
try:
#URL के लिए एक अनुरोध भेजना
response = requests.get(url, headers=headers, proxies=proxies, verify=False)
# खराब प्रतिक्रियाओं के लिए एक Httperror बढ़ाएं (4xx या 5xx स्थिति कोड)
response.raise_for_status()
# LXML के FromString विधि का उपयोग करके प्रतिक्रिया की 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 फ़ाइल में Finance_data_list सहेजें
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}")
उत्पादन:
यह गाइड `lxml` और` अनुरोधों जैसे शक्तिशाली पुस्तकालयों के साथ, पायथन का उपयोग करके Google वित्त से डेटा को स्क्रैप करने पर एक व्यापक ट्यूटोरियल प्रदान करता है। यह वित्तीय डेटा स्क्रैपिंग के लिए परिष्कृत उपकरण बनाने के लिए ग्राउंडवर्क देता है, जिसका उपयोग गहराई से बाजार विश्लेषण करने, प्रतियोगी गतिविधियों की निगरानी करने, या सूचित निवेश निर्णयों का समर्थन करने के लिए किया जा सकता है।
टिप्पणियाँ: 0