از سایت بن بست با پایتون
نتیجه رو میتونید از این آدرس بردارید که تا این تاریخ داخلش هست.
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')