利用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使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
神经网络理论基础及Python实现详解
Dec 15 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
python 实现识别图片上的数字
Jul 30 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
Python面向对象之私有属性和私有方法应用案例分析
Dec 31 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
用文本文件制作留言板提示(上)
2006/10/09 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
处理php自动反斜杠的函数代码
2010/01/05 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
分享10段PHP常用代码
2015/11/11 PHP
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
详解python多线程、锁、event事件机制的简单使用
2018/04/27 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python3.7黑帽编程之病毒篇(基础篇)
2020/02/04 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
仓库管理员岗位职责
2014/03/19 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
2015年先进个人自荐书
2015/03/24 职场文书
Python中如何处理常见报错
2022/01/18 Python