利用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脚本在Appium库上对移动应用实现自动化测试
Apr 17 Python
Python的字典和列表的使用中一些需要注意的地方
Apr 24 Python
Python数据类型详解(三)元祖:tuple
May 08 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
python实现京东秒杀功能
Jul 30 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
python基于递归解决背包问题详解
Jul 03 Python
使用遗传算法求二元函数的最小值
Feb 11 Python
详解Django3中直接添加Websockets方式
Feb 12 Python
浅析Python 条件控制语句
Jul 15 Python
python 绘制国旗的示例
Sep 27 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 数字左侧自动补0
2008/03/31 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python修改操作系统时间的方法
2015/05/18 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
单位人事专员介绍信
2014/01/11 职场文书
九年级数学教学反思
2014/02/02 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
个人遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
杜甫草堂导游词
2015/02/03 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
公司庆典主持词
2015/07/04 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记