使用 Python 构建股票价格 CLI

2025-06-08

使用 Python 构建股票价格 CLI

你是那种忍不住每 5 分钟查看一次最新股票价格的人吗?多亏了 Python,获取最新股票价格变得像python3 main.py AMZN在终端中运行一样简单。在本教程中,你将学习如何使用 Python 创建一个 CLI,它:

  1. 读取您想要获取其价格的股票代码。
  2. 抓取指定股票的最新价格。
  3. 显示抓取的价格。

让我们开始吧

首先,创建一个新的 Python 文件。在本教程中,我将我的文件命名为main.py。新建 Python 文件后,导入sysBeautifulSoup然后运行requests
main.py

import sys
import requests
from bs4 import BeautifulSoup
Enter fullscreen mode Exit fullscreen mode

我们的 CLI 需要用户在 之后输入一个代码作为命令行参数python3 main.py。使用该sys库,我们可以检查用户是否输入了代码,并在未提供代码或提供的代码过多时返回错误。然后,此 CLI 会将ticker变量定义为用户提供的第二个参数:
main.py

if len(sys.argv) > 2:
    print('You have specified too many tickers')
    sys.exit()

if len(sys.argv) < 2:
    print('No ticker provided')
    sys.exit()

ticker = sys.argv[1] # 0 = first argument and 1 = second argument
Enter fullscreen mode Exit fullscreen mode

现在,我们的 CLI 需要抓取所提供的股票代码以获取其最新价格。我们可以使用BeautifulSouprequests库来实现。

CLI 将从雅虎财经抓取股票价格。它需要根据用户输入的股票代码更改抓取的 URL。由于输入的股票代码存储在ticker变量中,遵循雅虎财经的 URL 结构,CLI 可以url根据股票代码更改变量,如下所示:
main.py

url = 'https://finance.yahoo.com/quote/' + ticker + '?p=' + ticker + '&.tsrc=fin-srch'
response = requests.get(url)
Enter fullscreen mode Exit fullscreen mode

例如,如果提供的代码是AMZN,CLI 将抓取此 url
如果提供的代码是AAPL,CLI 将抓取此 url

完整代码:

import os
import sys
import requests
from bs4 import BeautifulSoup

if len(sys.argv) > 2:
    print('You have specified too many tickers')
    sys.exit()

if len(sys.argv) < 2:
    print('No ticker provided')
    sys.exit()

ticker = sys.argv[1]

url = 'https://finance.yahoo.com/quote/' + ticker + '?p=' + ticker + '&.tsrc=fin-srch'
response = requests.get(url)
Enter fullscreen mode Exit fullscreen mode

股价下跌

对于实际的抓取部分,首先访问雅虎财经上一个示例股票代码的股价网页。在本教程中,我将选择亚马逊 (AMZN)。找到示例股票代码的股价元素,然后右键单击它。这将在光标旁边弹出一个窗口,点击以下inspect选项:
检查股票价格

这将在屏幕右侧弹出一个包含此网页 DOM 的大型窗口,其中选定的股票价格元素以浅蓝色突出显示:
DOM 弹出窗口

选择并复制突出显示的元素的class属性:
选择类别属性


现在您已拥有此元素的class属性,要抓取此股票的最新股价,请将以下代码添加到main.py
main.py

    soup = BeautifulSoup(response.text, 'html.parser')
    price = soup.find('body').find(class_='Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)')
    print('Latest stock price: ' + price.text.strip())
Enter fullscreen mode Exit fullscreen mode

此代码将通过其类属性找到股票价格元素并使用显示其文本内容price.text.strip()

完整代码:

import os
import sys
import requests
from bs4 import BeautifulSoup

if len(sys.argv) > 2:
    print('You have specified too many tickers')
    sys.exit()

if len(sys.argv) < 2:
    print('No ticker provided')
    sys.exit()

ticker = sys.argv[1]

url = 'https://finance.yahoo.com/quote/' + ticker + '?p=' + ticker + '&.tsrc=fin-srch'
response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')
price = soup.find('body').find(class_='Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)')
print('Latest stock price: ' + price.text.strip())
Enter fullscreen mode Exit fullscreen mode

最后一件事!
将最后一段代码放入try:语句中,如果用户输入了无效的代码,则返回错误:

import os
import sys
import requests
from bs4 import BeautifulSoup

if len(sys.argv) > 2:
    print('You have specified too many tickers')
    sys.exit()

if len(sys.argv) < 2:
    print('No ticker provided')
    sys.exit()

ticker = sys.argv[1]

url = 'https://finance.yahoo.com/quote/' + ticker + '?p=' + ticker + '&.tsrc=fin-srch'
response = requests.get(url)
try:
    soup = BeautifulSoup(response.text, 'html.parser')
    price = soup.find('body').find(class_='Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)')
    print('Latest stock price: ' + price.text.strip())
except:
    print('Invalid ticker')
Enter fullscreen mode Exit fullscreen mode

测试时间到了!

现在你已经有了完整的代码,是时候运行一些测试了。
查看亚马逊的股价:
AMZN 股票价格

查看苹果的股价:
AAPL股价

输入无效股票代码:
无效股票代码


结论

我希望本文能帮助您了解 Python 中的 CLI 开发,并为您提供一个有趣且有用的 Python 项目想法。

鏂囩珷鏉ユ簮锛�https://dev.to/code_jedi/lets-build-a-stock-price-cli-with-python-g28
PREV
你的第一个 React 项目
NEXT
2025 年的前端开发:现代 Web 的全面学习之旅