利用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 相关文章推荐
Linux下Python获取IP地址的代码
Nov 30 Python
Go语言基于Socket编写服务器端与客户端通信的实例
Feb 19 Python
Python编程深度学习计算库之numpy
Dec 28 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
三个python爬虫项目实例代码
Dec 28 Python
TensorFLow 变量命名空间实例
Feb 11 Python
关于Python turtle库使用时坐标的确定方法
Mar 19 Python
python实现udp传输图片功能
Mar 20 Python
Python文件操作模拟用户登陆代码实例
Jun 09 Python
Python下划线5种含义代码实例解析
Jul 10 Python
Python中的turtle画箭头,矩形,五角星
Mar 16 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
php 日期时间处理函数小结
2009/12/18 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
一个JS翻页效果
2007/07/23 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
详解JavaScript设计模式开发中的桥接模式使用
2016/05/18 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
python比较两个列表是否相等的方法
2015/07/28 Python
Python网站验证码识别
2016/01/25 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
异常和异常类的概念
2014/09/12 面试题
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
怎么写自荐书范文
2014/02/12 职场文书
承诺书的格式范文
2014/03/28 职场文书
关于读书的演讲稿
2014/05/07 职场文书
入门学习Go的基本语法
2021/07/07 Golang
Golang入门之计时器
2022/05/04 Golang