Python爬取金价后如何按阈值设置红、绿两种终端打印颜色
实现方案
核心改动分为三步:
- 补充终端颜色重置规则,避免打印后终端颜色被持续污染
- 对抓取到的价格文本做格式化处理,提取纯数值用于阈值判断
- 新增数值比较逻辑,匹配对应颜色输出
修改后的完整代码如下:
from urllib.request import urlopen, Request from bs4 import BeautifulSoup from datetime import datetime import time import os import re class bcolors: SELL = '\033[92m' # 高于阈值用绿色 BUY = '\033[31;1m' # 低于阈值用红色 ENDC = '\033[0m' # 颜色重置 os.system("clear") PRICE_THRESHOLD = 860000 # 价格阈值可自行调整 while True: url = "https://pluang.com/produk/pluang-emas" UserAgent = Request(url, headers={'User-Agent':'Mozilla/5.0'}) html = urlopen(UserAgent) data = BeautifulSoup(html, "html.parser") items = data.findAll("h1", {"id":"gold-price"}) for item in items: price_raw = item.get_text().strip() # 提取价格中的纯数字,适配带货币符号、千分位分隔符的场景 price_num = int(re.sub(r'\D', '', price_raw)) # 根据阈值判断使用的颜色 if price_num < PRICE_THRESHOLD: color = bcolors.BUY else: color = bcolors.SELL # 打印输出最后加颜色重置,避免影响后续终端输出 print(f"{color} SELL GOLD: {price_raw} - {datetime.now()}{bcolors.ENDC}") time.sleep(59)
如果站点返回的价格格式包含小数位,把int改成float调整提取逻辑即可;如果需要单独处理等于阈值的情况,新增elif分支即可。
内容的提问来源于stack exchange,提问作者Kabar Kabari
相关产品推荐
相关产品推荐

