用python爬取数据进行汇率转换

用python爬取数据进行汇率转换

    • 背景
    • python脚本
    • 结语

背景

在工作中处理数据需求的时候遇到需要汇率转换的情况, 因此百度了一下, 找到了爬取数据的方法, 根据实际需求对原脚本进行了一下优化, 给大家分享一下, 复制即可用.
(抱歉当时没有记录下链接, 后面找不回了, 如有侵犯, 原作者看到此篇文章可以找我加上原地址链接或者删除此文章)

python脚本

// An highlighted block

import re
import json
import urllib.request
import pandas as pd
import datetime
import time

#填入需要被转换的货币英文缩写:
from_currency = ['CNY','COP','THB','HKD','MYR','SGD','JPY','AUD','GBP','INR','ARS','CHF','MXN','RUB','CAD','BRL','AED','KRW','CLP','TWD','EUR','NZD','USD']

#填入转换目标币种的英文缩写:
to_currency = 'USD'

#设置函数爬取目标网页数据进行汇率转换
def get_CNYexchange(currency):
    if currency.upper() == 'CNY': #若被转换货币是CNY, 则默认输出汇率为1;
        tmp_exchange = 1
    else:
        url = "http://webforex.hermes.hexun.com/forex/quotelist?code=FOREX{exchange_list}&column=Code,Price".format(exchange_list=currency + 'CNY')
        req = urllib.request.Request(url)
        f = urllib.request.urlopen(req)
        html = f.read().decode("utf-8")
        s = re.findall("{.*}",str(html))[0]
        sjson = json.loads(s)
        tmp_exchange = sjson["Data"][0][0][1]/10000
    return tmp_exchange

target_exchange = []

if to_currency.upper() == 'CNY':
    for i in range(0,len(from_currency)):
        tmp_exchange = round(get_CNYexchange(from_currency[i]),4)
        target_exchange.append(tmp_exchange)
        time.sleep(1) #隔1秒抓取一次, 降低目标服务器压力
else:
    for i in range(0,len(from_currency)):
        tmp_exchange = round(get_CNYexchange(from_currency[i])/get_CNYexchange(to_currency),4)
        target_exchange.append(tmp_exchange)
        time.sleep(1) #隔1秒抓取一次, 降低目标服务器压力

##输出为DataFrame格式
target_df = pd.DataFrame({'from_currency':from_currency,'to_currenct':to_currency,
                        'exchange_rate':target_exchange,'exchange_date':datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")})
                          
print(target_df)

结语

希望能给大家提供帮助,有任何建议或者建议欢迎提出。

你可能感兴趣的:(用python爬取数据进行汇率转换)