利用Python中的Xpath實(shí)現(xiàn)一個(gè)在線匯率轉(zhuǎn)換器
前言
在之前的語(yǔ)法里面,我們記得有一個(gè)初識(shí)Python之匯率轉(zhuǎn)換篇,在那個(gè)程序里面我們發(fā)現(xiàn)可以運(yùn)用一些基礎(chǔ)的語(yǔ)法寫一個(gè)匯率計(jì)算,但是學(xué)到后面的小伙伴就會(huì)發(fā)現(xiàn)這個(gè)小程序有一定的弊端。
首先,它不可以實(shí)時(shí)的獲取匯率的值,每次都需要我們自己去定義一個(gè)匯率轉(zhuǎn)換值,這個(gè)就會(huì)顯得不是很智能,有點(diǎn)機(jī)械,所以我們這一個(gè)利用爬蟲爬取一個(gè)網(wǎng)址里面的匯率值(一直在更新的),這里我們利用Xpath來(lái)獲取這個(gè)數(shù)據(jù)值
其次我們發(fā)現(xiàn)在之前的程序里面,我們好像只能輸入兩位數(shù)的貨幣數(shù)據(jù),這一次我們通過(guò)正負(fù)索引的方法,只獲取除了最后三個(gè)單位的之外的數(shù)據(jù)即可,靈活的運(yùn)用,然后輸出最后帶入單位,最后讓輸出個(gè)更加的美觀和直接。
下面我們來(lái)看看爬蟲數(shù)據(jù)的代碼
首先我們看看這個(gè)網(wǎng)址,我們來(lái)解析一下這個(gè)網(wǎng)頁(yè)的數(shù)據(jù)頁(yè)面


導(dǎo)入庫(kù)和爬取數(shù)據(jù)
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)#打印狀態(tài)碼
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("實(shí)時(shí)匯率為:{}".format(USD_VS_RMB_1))
這里的Xpath語(yǔ)法規(guī)則,大家可以移步于初識(shí)爬蟲之Xpath語(yǔ)法篇看看,其實(shí)一條語(yǔ)句就可以解決,非常的方便。
轉(zhuǎn)換程序代碼
currency_str_value = 0
while currency_str_value != "":
USD_VS_RMB = float(str(USD_VS_RMB_1))
# 輸入帶單位的貨幣金額
currency_str_value = input('請(qǐng)輸入帶單位貨幣的金額: ')
# 獲取貨幣單位
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定義函數(shù)
convert_currency2 = lambda x: x * exchange_rate
# 調(diào)用lambda函數(shù)
out_money = convert_currency2(in_money)
print('轉(zhuǎn)換后的金額是:{} {} '.format(round(out_money), string))
else:
print('無(wú)法計(jì)算')
其實(shí)里面沒(méi)有什么難點(diǎn),只是對(duì)于一些語(yǔ)法不夠熟練的小伙伴來(lái)說(shuō)有一點(diǎn)難,不過(guò)多看幾次就好了
下面我們來(lái)看看演示效果

全部代碼
# -*- coding : utf-8 -*-
# @Time : 2020/9/8 12:37
# @author : 王小王
# @Software : PyCharm
# @File : 匯率實(shí)時(shí)計(jì)算.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)#打印狀態(tài)碼
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("實(shí)時(shí)匯率為:{}".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('請(qǐng)輸入帶單位貨幣的金額: ')
# 獲取貨幣單位
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定義函數(shù)
convert_currency2 = lambda x: x * exchange_rate
# 調(diào)用lambda函數(shù)
out_money = convert_currency2(in_money)
print('轉(zhuǎn)換后的金額是:{} {} '.format(out_money, string))
else:
print('無(wú)法計(jì)算')
Get_huilv(url, headers)
總結(jié)
到此這篇關(guān)于利用Python中的Xpath實(shí)現(xiàn)一個(gè)在線匯率轉(zhuǎn)換器的文章就介紹到這了,更多相關(guān)Python Xpath實(shí)現(xiàn)在線匯率轉(zhuǎn)換器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python的PIL庫(kù)學(xué)習(xí)詳解
這篇文章主要介紹了基于Python的PIL庫(kù)學(xué)習(xí)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
python3+PyQt5重新實(shí)現(xiàn)QT事件處理程序
這篇文章主要為大家詳細(xì)介紹了python3+PyQt5重新實(shí)現(xiàn)QT事件處理程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
使用Python中的Argparse實(shí)現(xiàn)將列表作為命令行參數(shù)傳遞
Argparse?是一個(gè)?Python?庫(kù),用于以用戶友好的方式解析命令行參數(shù),本文我們將討論如何使用?Python?中的?Argparse?庫(kù)將列表作為命令行參數(shù)傳遞,感興趣的可以了解下2023-08-08
Python對(duì)象轉(zhuǎn)JSON字符串的方法
這篇文章主要介紹了Python對(duì)象轉(zhuǎn)JSON字符串的方法,涉及Python基于json模塊實(shí)現(xiàn)json轉(zhuǎn)換的實(shí)現(xiàn)技巧,非常簡(jiǎn)便易懂,需要的朋友可以參考下2016-04-04
Python機(jī)器學(xué)習(xí)應(yīng)用之樸素貝葉斯篇
樸素貝葉斯模型是一組非常簡(jiǎn)單快速的分類算法,通常適用于維度非常高的數(shù)據(jù)集。因?yàn)檫\(yùn)行速度快,而且可調(diào)參數(shù)少,因此非常適合為分類問(wèn)題提供快速粗糙的基本方案2022-01-01
Python 中pandas.read_excel詳細(xì)介紹
這篇文章主要介紹了Python 中pandas.read_excel詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-06-06
python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入
這篇文章主要介紹了python基于隱馬爾可夫模型實(shí)現(xiàn)中文拼音輸入的相關(guān)資料,需要的朋友可以參考下2016-04-04

