گرفتن قیمت یورو چندسال گذشته

از سایت بن بست با پایتون

نتیجه رو می‌تونید از این آدرس بردارید که تا این تاریخ داخلش هست.

from lxml import etree
import urllib
import pandas as pd

امتحان کانکشن

cur = 'usd'
url = "https://www.bonbast.com/historical/"+cur
urltest = url+"/2020/10"
print(urltest)

for year in range(2013,2022):
    for month in range(1,13):
        print(url+"/"+str(year)+"/"+str(month))
web = urllib.request.urlopen("https://www.bonbast.com/historical/eur/2020/10")
s = web.read()

html = etree.HTML(s)
web = urllib.request.urlopen(urltest)
s = web.read()

html = etree.HTML(s)

## Get all 'tr'
tr_nodes = html.xpath('//table/tr')

## 'th' is inside first 'tr'
# header = [i[0].text for i in tr_nodes[0].xpath("th")]

## Get text from rest all 'tr'
td_content = [[td.text for td in tr.xpath('td')] for tr in tr_nodes[1:-4]]
df = pd.DataFrame(td_content)
df.columns = ['Date', 'Sell', 'Buy']
df.info()
df = pd.DataFrame({'Year' : [],'Month' : [],'Date' : [] , 'Sell' : [] ,'Buy':[] })
year = 2013
month = 1
df[(df['Year'] == year) & (df['Month'] == month)].empty

گرفتن مقادیر

for year in range(2013,2021):

for year in range(2013,2022):
    for month in range(1,13):
        if (df[(df['Year'] == year) & (df['Month'] == month)]).empty:            
            web1 = urllib.request.urlopen(url+"/"+str(year)+"/"+str(month))
            s1 = web1.read()
            html1 = etree.HTML(s1)
            tr_nodes1 = html1.xpath('//table/tr')
            td_content1 = [[td.text for td in tr.xpath('td')] for tr in tr_nodes1[1:-4]]

            df1 = pd.DataFrame(td_content1)
            if df1.empty:
                continue 
            df1['Year'] = year
            df1['Month'] = month
            df1.columns = [ 'Date', 'Sell', 'Buy','Year' , 'Month' ]
                 

            if (int(df1['Date'][0][0:4]) != year) | (int(df1['Date'][0][5:7]) != month):
                continue


            print(url+"/"+str(year)+"/"+str(month))

            df = df.append(df1 , ignore_index=True)
df
for year in range(2013,2022):
    for month in range(1,13):
        if (df[(df['Year'] == year) & (df['Month'] == month)]).empty:
            print(year , '-' , month)
df.to_excel('rate.xlsx')

با تاریخ شمسی

می‌تونید از این آدرس جدول تبدیل تاریخ میلادی به شمسی رو بردارید

dt = pd.read_excel('..\Date\Date.xlsx')
dt.head(2)
df = df.merge(dt , left_on='Date' , right_on='FullDateAlternateKey' )
df.head()

خروجی اکسل

dfdf.to_excel('DollerRate.xlsx')

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *