今天我们来,讲解一个实例;如何把网页上的汇率表以 Excel 的格式下载到本地;汇率表是不同国家之间的货币的兑换比例;通常来说,经常出境旅游的人,或者跨境电商、外贸行业等经常与外币打交道的人会较为关心汇率的情况;通常我们可以网络上或者手机端查找到汇率表,那么如何将汇率表,下载到本地,以 Excel 的形式保存呢?
01 首先在网络上查找到汇率表的嵌入表格
themoneyconverter是一家提供汇率信息的网站,它也提供了嵌入式的汇率表格;如下图所示:
它提供了 3 个汇率子表,其实我们只需要第 1 个表格的汇率信息即可
02 安装 Pandas、Numpy、Openpyxl 和 lxml
我们在代码中,需要用到Pandas、Numpy、Openpyxl和lxml四个库;使用命令如下:
# 安装pandas库,其中Numpy是其依赖库,所以会自动安装;但如果先安装了Numpy就得继续安装Pandaspip install pandas
# 安装Opnepyxl库pip install openpyxl
# 安装lxml库pip install lxml
03 查看网页表格的结构
我们在网页汇率表,右键单击审查元素
然后可以看到,所有的数据其实都在
内,这也是 Pandas 能正常读取表格数据的前提条件,如果是其他格式,很可能会乱码04 使用 Pandas 读取并保存数据
导入 Pandas 库,并传入url参数
import pandas as pd#将网页汇率表作为url地址参数url = "https://themoneyconverter.com/CN/CurrencyConverter?tab=1&from=USD&to=CNY&bg=ffffff"#使用pd.read_html()函数进行读取解析html_data = pd.read_html(url)#因为有3个子表,我们只需要第1个,将索引设置为0,并转换成DataFrametab = pd.DataFrame(html_data[0])print(tab)
可以看到,数据与网页端的大致一致,只是国旗图标部分现在成了 NaN; 我们只提取用到的数据,使用iloc[]分别提取数据
df1 = tab.iloc[:,1:3]df2 = tab.iloc[:,4:6]print(df1)print(df2)
可以看到,它们的列名不一致,我们使用df.columns = ['币种','汇率']重新命名 DataFrame 列名
df1.columns = ['币种','汇率']df2.columns = ['币种','汇率']print(df1)print(df2)
可以看到,已经修改列名成功 然后我们使用df.append()函数,将 2 个DataFrame合并为 1 个新的DataFrame
tab2 = df1.append(df2,ignore_index = True)
最后,将DataFrame输出为Excel,因为 Pandas 会自动生成行号索引,如不需要则使用index = None标记;
完整代码如下:
import pandas as pdurl = "https://themoneyconverter.com/CN/CurrencyConverter?tab=1&from=USD&to=CNY&bg=ffffff"html_data = pd.read_html(url)tab = pd.DataFrame(html_data[0])df1 = tab.iloc[:,1:3]df2 = tab.iloc[:,4:6]df1.columns = ['币种','汇率']df2.columns = ['币种','汇率']tab2 = df1.append(df2,ignore_index = True)#如Excel默认与代码文件保存在同一文件夹,如需指定则需要将路径写全tab2.to_excel("汇率.xlsx",index = None)print("读取汇率表成功")
注意:运行代码时,不要打开同名的 Excel 表格,否则会报错
今天的教程,主要学习了:读取网页汇率表,并转换成Pandas的DataFrame数据框,并做了提取和合并;大家都学会了吗?
欢迎关注公众号:KnowHub 知识加油站
后续我们会循序渐进的学习OpenpyXl以及其他的Excel操作库,欢迎大家关注!