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

Categories

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

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

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')

Leave a comment

Your email address will not be published. Required fields are marked *


The reCAPTCHA verification period has expired. Please reload the page.