利用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基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
Nov 06 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
python将控制台输出保存至文件的方法
Jan 07 Python
django框架模板语言使用方法详解
Jul 18 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
Mar 24 Python
基于python实现对文件进行切分行
Apr 26 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
python如何绘制疫情图
Sep 16 Python
python中sys模块的介绍与实例
Apr 17 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
星际原理概述
2020/03/04 星际争霸
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
javascript eval函数深入认识
2009/02/21 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
对Python实现累加函数的方法详解
2019/01/23 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
学习Django知识点分享
2019/09/11 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
python 多进程队列数据处理详解
2019/12/23 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
Django-migrate报错问题解决方案
2020/04/21 Python
python中实现栈的三种方法
2020/12/19 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
护士实习生自我鉴定范文
2013/12/10 职场文书
给实习单位的感谢信
2014/02/01 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
法人代表证明书范本
2015/06/18 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
Python基本数据类型之字符串str
2021/07/21 Python