مقبول کریپٹو کرنسیوں کے ل price قیمتوں سے باخبر رہنا ان کی اعلی اتار چڑھاؤ کی وجہ سے مشکل ہوسکتا ہے۔ جب کریپٹو کرنسیوں سے نمٹنے کے دوران مکمل تحقیق کرنا اور منافع کے مواقع کو فائدہ اٹھانے کے لئے تیار رہنا ضروری ہے۔ قیمتوں کا درست اعداد و شمار حاصل کرنا بعض اوقات مشکل ہوسکتا ہے۔ APIs عام طور پر اس مقصد کے لئے استعمال ہوتے ہیں ، لیکن مفت سبسکرپشن اکثر حدود کے ساتھ آتے ہیں۔
ہم یہ دریافت کریں گے کہ کس طرح وقتا فوقتا ازگر کا استعمال کرتے ہوئے ٹاپ 150 کریپٹو کرنسیوں کی موجودہ قیمتوں کو کھرچنا ہے۔ ہمارا cryptocurrency پرائس ٹریکر مندرجہ ذیل ڈیٹا اکٹھا کرے گا:
ہمارے ازگر اسکرپٹ کا پہلا قدم ضروری لائبریریوں کو درآمد کرنا ہے۔ ہم بالترتیب HTML فائلوں سے درخواستیں بھیجنے اور ڈیٹا نکالنے کے لئے `درخواستوں اور` builtySoup` لائبریریوں کا استعمال کریں گے۔
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)
یاد رکھیں "آپ کے_پروکسی_پ_اڈریس" اور "آپ کے_پروکسی_پورٹ" کو اصل پراکسی ایڈریس کے ساتھ تبدیل کریں۔ نیز ، "صارف نام" اور "پاس ورڈ" کی قدر کو اپنی اسناد کے ساتھ تبدیل کریں۔
جدید ویب سائٹوں کو کامیابی کے ساتھ کھرچنے کے لئے پراکسیوں کو گھومانا ایک بہت ہی اہم تکنیک ہے کیونکہ جب وہ ایک ہی IP ایڈریس سے متعدد درخواستوں کا پتہ لگاتے ہیں تو وہ اکثر بوٹس اور کھرچنی تک رسائی کو روکتے ہیں یا ان پر پابندی لگاتے ہیں۔ پراکسی گردش قائم کرنے کے لئے ، بے ترتیب لائبریری درآمد کریں۔
گردش کے لئے پراکسیوں کی ایک فہرست بنائیں:
# پراکسیوں کی فہرست 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 () فنکشن کوئنڈیسک سے cryptocurrency قیمتوں کو ختم کرتا ہے۔ یہ درخواستوں کا استعمال کرتے ہوئے ویب سائٹ کو گیٹ کی درخواست بھیجتا ہے۔ ہم ردعمل کے متن اور پارسر "html.parser" کو beautrySoup کنسٹرکٹر کو منتقل کرتے ہیں۔
def get_crypto_prices():
url = "https://crypto.com/price"
html = requests.get(url, proxies=get_proxy())
soup = BeautifulSoup(html.text, "html.parser")
اس سے پہلے کہ ہم ڈیٹا نکالنے کا آغاز کریں ، ہمیں سائٹ کے ڈھانچے کو سمجھنے کی ضرورت ہے۔ ہم ویب پیج کے HTML کا معائنہ کرنے کے لئے براؤزر کے ڈویلپر ٹولز کا استعمال کرسکتے ہیں۔ ڈویلپر ٹولز تک رسائی حاصل کرنے کے ل you ، آپ ویب پیج پر دائیں کلک کرسکتے ہیں اور "معائنہ" کو منتخب کرسکتے ہیں۔
اس کے بعد ہم خوبصورت سوپ کے Find_all () فنکشن اور CSS سلیکٹر "TR" ، کلاس _ = 'CSS-1CXC880' کا استعمال کرتے ہوئے صفحہ پر قیمت کے تمام کنٹینر تلاش کرتے ہیں اور ہر ایک کے لئے سکے کا نام ، ٹکر ، قیمت ، اور 24 گھنٹے کی فیصد کی تبدیلی کو نکالتے ہیں۔ کنٹینر یہ ڈیٹا ایک لغت میں محفوظ ہے اور پھر قیمتوں کی فہرست میں شامل کیا جاتا ہے۔
یہاں ، ہم "CSS-RKWS3" کلاس کے ساتھ 'P' عنصر تلاش کرنے کے لئے Row.find ('p' ، کلاس _ = 'CSS-rkws3') استعمال کرتے ہیں۔ اس کے بعد ، ہم متن نکالتے ہیں اور اسے "نام" متغیر میں اسٹور کرتے ہیں۔
coin_name_tag = row.find('p', class_='css-rkws3')
name = coin_name_tag.get_text() if coin_name_tag else "no name entry"
اسی طرح ، ہم "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
ایکسپورٹ_ٹو_ سی ایس وی () فنکشن کی وضاحت سی ایس وی فائل میں سکریپڈ ڈیٹا کو برآمد کرنے کے لئے کی گئی ہے۔ ہم قیمتوں کی فہرست میں ڈیٹا کو مخصوص 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 فائل میں برآمد کرنے کے لئے ایکسپورٹ_ٹو_ سی ایس وی () کو کھرچنے کے ل .۔ اس کے بعد ہم قیمتوں کو دوبارہ اپ ڈیٹ کرنے سے پہلے 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 منٹ میں قیمتوں کو اپ ڈیٹ کریں (ضرورت کے مطابق ایڈجسٹ کریں)
ہمارے کریپٹو پرائس ٹریکر کے نتائج کو سی ایس وی فائل میں محفوظ کیا گیا ہے جسے "پراکسی_کرپٹو_پریسس سی ایس وی" کہتے ہیں جیسا کہ ذیل میں دیکھا گیا ہے:
ازگر کا سیدھا سا نحو اسے خودکار کریپٹوکرنسی قیمت ٹریکر بنانے کے لئے مثالی انتخاب بناتا ہے۔ یہ پروگرامنگ زبان نئی خصوصیات کے اضافے اور ٹریکر کی صلاحیتوں میں توسیع کی سہولت فراہم کرتی ہے۔ فراہم کردہ مثال سے یہ ظاہر ہوتا ہے کہ ایک بنیادی کھرچنی بنانے کا طریقہ جو خود بخود مخصوص وقفوں سے کریپٹوکرنسی کی شرحوں کو اپ ڈیٹ کرسکتا ہے ، پراکسی کے ذریعے ڈیٹا اکٹھا کرسکتا ہے ، اور اسے صارف دوست شکل میں محفوظ کرسکتا ہے۔
تبصرے: 0