1. 程式人生 > 實用技巧 >用Python裡面的Xpath完成一個線上匯率轉換器

用Python裡面的Xpath完成一個線上匯率轉換器

閱讀本文需要3分鐘

首先,它不可以實時的獲取匯率的值,每次都需要我們自己去定義一個匯率轉換值,這個就會顯得不是很智慧,有點機械,所以我們這一個利用爬蟲爬取一個網址裡面的匯率值(一直在更新的),這裡我們利用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('無法計算') ​

其實裡面沒有什麼難點,只是對於一些語法不夠熟練的小夥伴來說有一點難,不過多看幾次就好了

下面我們來看看演示效果


全部程式碼

#-*-coding:utf-8-*-
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爬蟲資料分析挖掘,回覆【開源原始碼】免費獲取更多開源專案原始碼

公眾號每日更新python知識和【免費】工具