利用Python中的Xpath实现一个在线汇率转换器


Posted in Python onSeptember 09, 2020

前言

在之前的语法里面,我们记得有一个初识Python之汇率转换篇,在那个程序里面我们发现可以运用一些基础的语法写一个汇率计算,但是学到后面的小伙伴就会发现这个小程序有一定的弊端。

首先,它不可以实时的获取汇率的值,每次都需要我们自己去定义一个汇率转换值,这个就会显得不是很智能,有点机械,所以我们这一个利用爬虫爬取一个网址里面的汇率值(一直在更新的),这里我们利用Xpath来获取这个数据值

其次我们发现在之前的程序里面,我们好像只能输入两位数的货币数据,这一次我们通过正负索引的方法,只获取除了最后三个单位的之外的数据即可,灵活的运用,然后输出最后带入单位,最后让输出个更加的美观和直接。

下面我们来看看爬虫数据的代码

首先我们看看这个网址,我们来解析一下这个网页的数据页面

利用Python中的Xpath实现一个在线汇率转换器

利用Python中的Xpath实现一个在线汇率转换器

导入库和爬取数据

import requests
from lxml import etree

headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
}
url = "https://www.huilv.cc/USD_CNY/"


def Get_huilv(url, headers1):
  res = requests.get(url=url, headers=headers1, timeout=2)
  # print(res.status_code)#打印状态码
  html = etree.HTML(res.text)
  USD_VS_RMB_0 = html.xpath('//div[@id="main"]/div[1]/div[2]/span[1]/text()')
  for a in USD_VS_RMB_0:
    b = a
  USD_VS_RMB_1 = float(b)
  print("实时汇率为:{}".format(USD_VS_RMB_1))

这里的Xpath语法规则,大家可以移步于初识爬虫之Xpath语法篇看看,其实一条语句就可以解决,非常的方便。

转换程序代码

currency_str_value = 0
  while currency_str_value != "":
    USD_VS_RMB = float(str(USD_VS_RMB_1))
    # 输入带单位的货币金额
    currency_str_value = input('请输入带单位货币的金额: ')
    # 获取货币单位
    unit = currency_str_value[-3:].upper() # 第一次判断
    if unit == 'CNY':
      exchange_rate = 1 / USD_VS_RMB
      string = "美元"
    elif unit == 'USD':
      exchange_rate = USD_VS_RMB
      string = "元"
    else:
      exchange_rate = -1
    if exchange_rate != -1:
      in_money = eval(currency_str_value[0:-3])
      # 使用lambda定义函数
      convert_currency2 = lambda x: x * exchange_rate
      # 调用lambda函数
      out_money = convert_currency2(in_money)
      print('转换后的金额是:{} {} '.format(round(out_money), string))
    else:
      print('无法计算')

其实里面没有什么难点,只是对于一些语法不够熟练的小伙伴来说有一点难,不过多看几次就好了

下面我们来看看演示效果

利用Python中的Xpath实现一个在线汇率转换器

全部代码

# -*- coding : utf-8 -*-
# @Time   : 2020/9/8 12:37
# @author  : 王小王
# @Software : PyCharm
# @File   : 汇率实时计算.py
# @CSDN   : https://blog.csdn.net/weixin_47723732
import requests
from lxml import etree

headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
}
url = "https://www.huilv.cc/USD_CNY/"


def Get_huilv(url, headers1):
  res = requests.get(url=url, headers=headers1, timeout=2)
  # print(res.status_code)#打印状态码
  html = etree.HTML(res.text)
  USD_VS_RMB_0 = html.xpath('//div[@id="main"]/div[1]/div[2]/span[1]/text()')
  for a in USD_VS_RMB_0:
    b = a
  USD_VS_RMB_1 = float(b)
  print("实时汇率为:{}".format(USD_VS_RMB_1))

  currency_str_value = 0
  while currency_str_value != "":
    USD_VS_RMB = float(str(USD_VS_RMB_1))
    # 输入带单位的货币金额
    currency_str_value = input('请输入带单位货币的金额: ')
    # 获取货币单位
    unit = currency_str_value[-3:].upper() # 第一次判断
    if unit == 'CNY':
      exchange_rate = 1 / USD_VS_RMB
      string = "美元"
    elif unit == 'USD':
      exchange_rate = USD_VS_RMB
      string = "元"
    else:
      exchange_rate = -1
    if exchange_rate != -1:
      in_money = eval(currency_str_value[0:-3])
      # 使用lambda定义函数
      convert_currency2 = lambda x: x * exchange_rate
      # 调用lambda函数
      out_money = convert_currency2(in_money)
      print('转换后的金额是:{} {} '.format(out_money, string))
    else:
      print('无法计算')

Get_huilv(url, headers)

总结

到此这篇关于利用Python中的Xpath实现一个在线汇率转换器的文章就介绍到这了,更多相关Python Xpath实现在线汇率转换器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
Python连接phoenix的方法示例
Sep 29 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
Apr 27 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
对python生成业务报表的实例详解
Feb 03 Python
浅谈python 中类属性共享的问题
Jul 02 Python
Python3常用内置方法代码实例
Nov 18 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
python 如何调用远程接口
Sep 11 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
pytorch使用horovod多gpu训练的实现
Sep 09 #Python
python,Java,JavaScript实现indexOf
Sep 09 #Python
python 5个顶级异步框架推荐
Sep 09 #Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 #Python
Pytorch生成随机数Tensor的方法汇总
Sep 09 #Python
详解python内置模块urllib
Sep 09 #Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 #Python
You might like
记录mysql性能查询过程的使用方法
2013/05/02 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
PHP中使用curl入门教程
2015/07/02 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
JavaScript类和继承 constructor属性
2010/03/04 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python冒泡排序算法的实现代码
2013/11/21 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python排序算法实例代码
2017/08/10 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
python正则-re的用法详解
2019/07/28 Python
python中数字是否为可变类型
2020/07/08 Python
递归计算如下递归函数的值(斐波拉契)
2012/02/04 面试题
P/Invoke是什么
2015/07/31 面试题
财务会计人员岗位职责
2013/11/30 职场文书
竞聘演讲稿
2014/04/24 职场文书
心理健康日活动总结
2014/05/08 职场文书
志愿者活动总结报告
2014/06/27 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
欠条样本
2015/07/03 职场文书
Django migrate报错的解决方案
2021/05/20 Python
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
英镑符号 £
2022/02/17 杂记
SQL Server 中的事务介绍
2022/05/20 SQL Server