利用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实现mysql的单引号字符串过滤方法
Nov 14 Python
PyCharm 常用快捷键和设置方法
Dec 20 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
python实现闹钟定时播放音乐功能
Jan 25 Python
python 脚本生成随机 字母 + 数字密码功能
May 26 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
python如何使用socketserver模块实现并发聊天
Dec 14 Python
python for循环赋值问题
Jun 03 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JS验证邮件地址格式方法小结
2015/12/01 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
前端微信支付js代码
2016/07/25 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python生成随机密码的方法
2017/06/16 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
心灵捕手观后感
2015/06/02 职场文书
党员理论学习心得体会
2016/01/21 职场文书
话题作文之诚信
2019/11/28 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
javascript Number 与 Math对象的介绍
2021/11/17 Javascript
解析MySQL索引的作用
2022/03/03 MySQL