利用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二分法实现实例
Nov 21 Python
python显示生日是星期几的方法
May 27 Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
Python基于百度云文字识别API
Dec 13 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
Django接收post前端返回的json格式数据代码实现
Jul 31 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
如何基于线程池提升request模块效率
Apr 18 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定时执行计划任务的多种方法小结
2011/12/19 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
Laravel框架使用Redis的方法详解
2018/05/30 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
详解Node.js开发中的express-session
2017/05/19 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
js实现有趣的倒计时效果
2021/01/19 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
总结python实现父类调用两种方法的不同
2017/01/15 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
简单了解python代码优化小技巧
2019/07/08 Python
python视频按帧截取图片工具
2019/07/23 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
python interpolate插值实例
2020/07/06 Python
python基于opencv实现人脸识别
2021/01/04 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
给交警的表扬信
2014/01/12 职场文书
党员批评与自我批评
2014/10/15 职场文书
思想政治表现评语
2015/01/04 职场文书