लोकप्रिय क्रिप्टोकरेंसी के लिए ट्रैकिंग मूल्य डेटा उनकी उच्च अस्थिरता के कारण चुनौतीपूर्ण हो सकता है। पूरी तरह से शोध करना और क्रिप्टोकरेंसी से निपटने के दौरान लाभ के अवसरों को भुनाने के लिए तैयार रहना आवश्यक है। सटीक मूल्य निर्धारण डेटा प्राप्त करना कभी -कभी मुश्किल हो सकता है। एपीआई आमतौर पर इस उद्देश्य के लिए उपयोग किए जाते हैं, लेकिन मुफ्त सदस्यता अक्सर सीमाओं के साथ आती है।
हम यह पता लगाएंगे कि पायथन का उपयोग करके शीर्ष 150 क्रिप्टोकरेंसी की वर्तमान कीमतों को समय -समय पर कैसे परिमार्जन किया जाए। हमारे क्रिप्टोक्यूरेंसी मूल्य ट्रैकर निम्नलिखित डेटा एकत्र करेंगे:
हमारी पायथन स्क्रिप्ट में पहला कदम आवश्यक पुस्तकालयों को आयात करना है। हम क्रमशः HTML फ़ाइलों से अनुरोध भेजने और डेटा निकालने के लिए `अनुरोध 'और` beaughtsoup` पुस्तकालयों का उपयोग करेंगे।
import requests
from bs4 import BeautifulSoup
import csv
import time
import random
हम क्रमशः CSV फ़ाइल संचालन के लिए `CSV` और` टाइम` और `रैंडम` का उपयोग क्रमशः मूल्य अपडेट की आवृत्ति और प्रॉक्सी के रोटेशन को नियंत्रित करने के लिए करेंगे।
प्रीमियम प्रॉक्सी के बिना अनुरोध भेजते समय, आप "एक्सेस से इनकार" प्रतिक्रियाओं का सामना कर सकते हैं।
आप इस तरह से एक प्रॉक्सी सेट कर सकते हैं:
proxy = {
"http": "http://Your_proxy_IP_Address:Your_proxy_port",
}
html = requests.get(url, proxies=proxy)
प्रमाणित प्रॉक्सी के लिए, निम्न प्रारूप का उपयोग करें:
proxy = {
"http": "http://username:password@Your_proxy_IP_Address:Your_proxy_port",
}
html = requests.get(url, proxies=proxy)
"Your_proxy_ip_address" और "your_proxy_port" को वास्तविक प्रॉक्सी पते से बदलना याद रखें। इसके अलावा, "उपयोगकर्ता नाम" और "पासवर्ड" के मूल्य को अपने क्रेडेंशियल्स के साथ बदलें।
आधुनिक वेबसाइटों को सफलतापूर्वक खुरचने के लिए प्रॉक्सी को घुमाना एक बहुत ही महत्वपूर्ण तकनीक है क्योंकि वे अक्सर एक ही आईपी पते से कई अनुरोधों का पता लगाने पर बॉट्स और स्क्रेपर्स तक पहुंच को अवरुद्ध या प्रतिबंधित करते हैं। प्रॉक्सी रोटेशन सेट करने के लिए, यादृच्छिक पुस्तकालय आयात करें।
रोटेशन के लिए प्रॉक्सी की एक सूची बनाएं:
# परदे की सूची
proxies = [
"username:password@Your_proxy_IP_Address:Your_proxy_port1",
"username:password@Your_proxy_IP_Address:Your_proxy_port2",
"username:password@Your_proxy_IP_Address:Your_proxy_port3",
"username:password@Your_proxy_IP_Address:Your_proxy_port4",
"username:password@Your_proxy_IP_Address:Your_proxy_port5",
]
आगे बढ़ते हुए, हम प्रत्येक अनुरोध के लिए हमारी सूची से बेतरतीब ढंग से एक प्रॉक्सी का चयन करने के लिए एक get_proxy () फ़ंक्शन को परिभाषित करते हैं।
# अपने प्रॉक्सी को घुमाने की विधि
def get_proxy():
# सूची से एक यादृच्छिक प्रॉक्सी चुनें
proxy = random.choice(proxies)
return {
"http": f'http://{proxy}',
"https": f'http://{proxy}'
}
यह फ़ंक्शन HTTP प्रोटोकॉल के लिए चयनित प्रॉक्सी के साथ एक शब्दकोश लौटाता है। यह सेटअप हमें उस वेबसाइट पर कई कार्बनिक उपयोगकर्ताओं के रूप में प्रकट करने में मदद करता है जिसे हम स्क्रैप कर रहे हैं, एंटी-स्क्रैपिंग उपायों को बायपास करने की हमारी संभावनाओं को बढ़ाते हैं।
Get_crypto_prices () फ़ंक्शन Coindesk से क्रिप्टोक्यूरेंसी की कीमतों को स्क्रैप करता है। यह अनुरोधों का उपयोग करके वेबसाइट पर एक GET अनुरोध भेजता है। हम प्रतिक्रिया के पाठ में गुजरते हैं और पार्सर "html.parser" को Beautifulsoup कंस्ट्रक्टर के पास ले जाते हैं।
def get_crypto_prices():
url = "https://crypto.com/price"
html = requests.get(url, proxies=get_proxy())
soup = BeautifulSoup(html.text, "html.parser")
इससे पहले कि हम डेटा निष्कर्षण शुरू करें, हमें साइट संरचना को समझने की आवश्यकता है। हम वेबपेज के HTML का निरीक्षण करने के लिए ब्राउज़र के डेवलपर टूल का उपयोग कर सकते हैं। डेवलपर टूल तक पहुंचने के लिए, आप वेबपेज पर राइट-क्लिक कर सकते हैं और "निरीक्षण" का चयन कर सकते हैं।
फिर हम पृष्ठ पर सभी मूल्य कंटेनरों को BeautifulSoup के find_all () फ़ंक्शन और CSS चयनकर्ता "TR", क्लास _ = 'CSS-1CXC880' का उपयोग करते हैं और प्रत्येक के लिए सिक्का नाम, टिकर, मूल्य और 24 घंटे प्रतिशत परिवर्तन निकालते हैं। कंटेनर। यह डेटा एक शब्दकोश में संग्रहीत किया जाता है और फिर कीमतों की सूची में जोड़ा जाता है।
यहाँ, हम row.find ('p', वर्ग _ = 'css-rkws3') का उपयोग करते हैं, जो कि "CSS-RKWS3" के साथ 'P' तत्व का पता लगाने के लिए है। फिर, हम पाठ को निकालते हैं और इसे "नाम" चर में संग्रहीत करते हैं।
coin_name_tag = row.find('p', class_='css-rkws3')
name = coin_name_tag.get_text() if coin_name_tag else "no name entry"
इसी तरह, हम row.find ("स्पैन", क्लास _ = "CSS-1JJ7B1A") का उपयोग करते हैं, जो कि "CSS-1JJ7B1A" वर्ग के साथ स्पैन तत्व का पता लगाने के लिए है। Get_text () विधि पाठ सामग्री को निकालती है, हमें टिकर के साथ प्रदान करती है।
coin_ticker_tag = row.find('span', class_='css-1jj7b1a')
ticker = coin_ticker_tag.get_text() if coin_ticker_tag else "no ticker entry"
हम "CSS-B1ILZC" वर्ग के साथ "DIV" तत्व का पता लगाते हैं। पाठ सामग्री को तब छीन लिया जाता है और मूल्य चर को सौंपा जाता है। हम उन मामलों को संभालने के लिए एक सशर्त कथन का उपयोग करते हैं जहां तत्व मौजूद नहीं हो सकता है।
coin_price_tag = row.find('div', class_='css-b1ilzc')
price = coin_price_tag.text.strip() if coin_price_tag else "no price entry"
इसी तरह, हम प्रतिशत परिवर्तन को निकालने के लिए वर्ग "CSS-YYKU61" के साथ "P" तत्व का पता लगाते हैं। पाठ सामग्री छीन ली जाती है, और एक सशर्त कथन संभावित अनुपस्थिति को संभालता है।
coin_percentage_tag = row.find('p', class_='css-yyku61')
percentage = coin_percentage_tag.text.strip() if coin_percentage_tag else "no percentage entry"
यह सब एक साथ रखते हुए, हमारे पास लूप के लिए एक है जो इस तरह दिखता है:
for row in price_rows:
coin_name_tag = row.find('p', class_='css-rkws3')
name = coin_name_tag.get_text() if coin_name_tag else "no name entry"
coin_ticker_tag = row.find('span', class_='css-1jj7b1a')
ticker = coin_ticker_tag.get_text() if coin_ticker_tag else "no ticker entry"
coin_price_tag = row.find('div', class_='css-b1ilzc')
price = coin_price_tag.text.strip() if coin_price_tag else "no price entry"
coin_percentage_tag = row.find('p', class_='css-yyku61')
percentage = coin_percentage_tag.text.strip() if coin_percentage_tag else "no percentage entry"
prices.append({
"Coin": name,
"Ticker": ticker,
"Price": price,
"24hr-Percentage": percentage
})
return prices
Export_to_csv () फ़ंक्शन को SCRAPED डेटा को CSV फ़ाइल में निर्यात करने के लिए परिभाषित किया गया है। हम निर्दिष्ट CSV फ़ाइल में कीमतों की सूची में डेटा लिखने के लिए CSV लाइब्रेरी का उपयोग करते हैं।
def export_to_csv(prices, filename="proxy_crypto_prices.csv"):
with open(filename, "w", newline="") as file:
fieldnames = ["Coin", "Ticker", "Price", "24hr-Percentage"]
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(prices)
हमारी स्क्रिप्ट के मुख्य भाग में, हम get_crypto_prices () फ़ंक्शन को कीमतों को स्क्रैप करने के लिए कहते हैं और उन्हें CSV फ़ाइल में निर्यात करने के लिए export_to_csv ()। फिर से कीमतों को फिर से अपडेट करने से पहले हम 5 मिनट (300) का इंतजार करते हैं। यह एक अनंत लूप में किया जाता है, इसलिए कीमतें हर 5 मिनट में अपडेट करती रहेंगी जब तक कि कार्यक्रम बंद नहीं हो जाता।
if __name__ == "__main__":
while True:
prices = get_crypto_prices()
export_to_csv(prices)
print("Prices updated. Waiting for the next update...")
time.sleep(300) # हर 5 मिनट में कीमतें अपडेट करें
यहां पूर्ण कोड है जो सभी तकनीकों और चरणों को एकीकृत करेगा जो हमने कवर किया है, एक क्रिप्टो मूल्य ट्रैकर बनाने के लिए एक सुव्यवस्थित दृष्टिकोण प्रदान करेगा जैसा कि हमने इस परियोजना में किया है।
import requests
from bs4 import BeautifulSoup
import csv
import time
import random
# परदे की सूची
proxies = [
"username:password@Your_proxy_IP_Address:Your_proxy_port1",
"username:password@Your_proxy_IP_Address:Your_proxy_port2",
"username:password@Your_proxy_IP_Address:Your_proxy_port3",
"username:password@Your_proxy_IP_Address:Your_proxy_port4",
"username:password@Your_proxy_IP_Address:Your_proxy_port5",
]
# प्रॉक्सी को घुमाने के लिए कस्टम विधि
def get_proxy():
# सूची से एक यादृच्छिक प्रॉक्सी चुनें
proxy = random.choice(proxies)
# HTTP प्रोटोकॉल के लिए प्रॉक्सी के साथ एक शब्दकोश लौटाएं
return {"http": f'http://{proxy}',
"https": f'http://{proxy}'
}
def get_crypto_prices():
url = "https://crypto.com/price"
html = requests.get(url, proxies=get_proxy())
print(html.status_code)
soup = BeautifulSoup(html.content, "html.parser")
price_rows = soup.find_all('tr', class_='css-1cxc880')
prices = []
for row in price_rows:
coin_name_tag = row.find('p', class_='css-rkws3')
name = coin_name_tag.get_text() if coin_name_tag else "no name entry"
coin_ticker_tag = row.find('span', class_='css-1jj7b1a')
ticker = coin_ticker_tag.get_text() if coin_ticker_tag else "no ticker entry"
coin_price_tag = row.find('div', class_='css-b1ilzc')
price = coin_price_tag.text.strip() if coin_price_tag else "no price entry"
coin_percentage_tag = row.find('p', class_='css-yyku61')
percentage = coin_percentage_tag.text.strip() if coin_percentage_tag else "no percentage entry"
prices.append({
"Coin": name,
"Ticker": ticker,
"Price": price,
"24hr-Percentage": percentage
})
return prices
def export_to_csv(prices, filename="proxy_crypto_prices.csv"):
with open(filename, "w", newline="") as file:
fieldnames = ["Coin", "Ticker", "Price", "24hr-Percentage"]
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(prices)
if __name__ == "__main__":
while True:
prices = get_crypto_prices()
export_to_csv(prices)
print("Prices updated. Waiting for the next update...")
time.sleep(300) # हर 5 मिनट में कीमतें अपडेट करें (आवश्यकतानुसार समायोजित करें)
हमारे क्रिप्टो प्राइस ट्रैकर के परिणामों को "PROXY_CRYPTO_PRICES.CSV" नामक CSV फ़ाइल में सहेजा जाता है जैसा कि नीचे देखा गया है:
पायथन का सीधा सिंटैक्स इसे एक स्वचालित क्रिप्टोक्यूरेंसी मूल्य ट्रैकर बनाने के लिए आदर्श विकल्प बनाता है। यह प्रोग्रामिंग भाषा नई सुविधाओं के अलावा और ट्रैकर की क्षमताओं के विस्तार की सुविधा प्रदान करती है। प्रदान किया गया उदाहरण दर्शाता है कि एक बुनियादी स्क्रैपर कैसे बनाया जाए जो स्वचालित रूप से निर्दिष्ट अंतराल पर क्रिप्टोक्यूरेंसी दरों को अपडेट कर सकता है, एक प्रॉक्सी के माध्यम से डेटा एकत्र कर सकता है, और इसे उपयोगकर्ता के अनुकूल प्रारूप में सहेज सकता है।
टिप्पणियाँ: 0