利用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 3中的yield from语法详解
Jan 18 Python
Python算法应用实战之队列详解
Feb 04 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
python实现简单的单变量线性回归方法
Nov 08 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
Python 文件数据读写的具体实现
Jan 24 Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 Python
Python如何实现定时器功能
May 28 Python
python支持多继承吗
Jun 19 Python
python 统计代码耗时的几种方法分享
Apr 02 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
批量修改RAR文件注释的php代码
2010/11/20 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
jquery创建div 实现代码
2009/04/27 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python刷投票的脚本实现代码
2014/11/08 Python
python分析apache访问日志脚本分享
2015/02/26 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
生物化工专业个人自荐信
2013/09/26 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
出生公证书样本
2014/04/04 职场文书
食品销售计划书
2014/04/26 职场文书
食品安全工作方案
2014/05/07 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
前台接待员岗位职责
2015/04/15 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL