使用 Python 构建股票价格 CLI
你是那种忍不住每 5 分钟查看一次最新股票价格的人吗?多亏了 Python,获取最新股票价格变得像python3 main.py AMZN在终端中运行一样简单。在本教程中,你将学习如何使用 Python 创建一个 CLI,它:
- 读取您想要获取其价格的股票代码。
- 抓取指定股票的最新价格。
- 显示抓取的价格。
让我们开始吧
首先,创建一个新的 Python 文件。在本教程中,我将我的文件命名为main.py。新建 Python 文件后,导入sys,BeautifulSoup然后运行requests:
main.py
import sys
import requests
from bs4 import BeautifulSoup
我们的 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
现在,我们的 CLI 需要抓取所提供的股票代码以获取其最新价格。我们可以使用BeautifulSoup和requests库来实现。
CLI 将从雅虎财经抓取股票价格。它需要根据用户输入的股票代码更改抓取的 URL。由于输入的股票代码存储在ticker变量中,遵循雅虎财经的 URL 结构,CLI 可以url根据股票代码更改变量,如下所示:
main.py
url = 'https://finance.yahoo.com/quote/' + ticker + '?p=' + ticker + '&.tsrc=fin-srch'
response = requests.get(url)
例如,如果提供的代码是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)
股价下跌
对于实际的抓取部分,首先访问雅虎财经上一个示例股票代码的股价网页。在本教程中,我将选择亚马逊 (AMZN)。找到示例股票代码的股价元素,然后右键单击它。这将在光标旁边弹出一个窗口,点击以下inspect选项:
这将在屏幕右侧弹出一个包含此网页 DOM 的大型窗口,其中选定的股票价格元素以浅蓝色突出显示:
现在您已拥有此元素的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())
此代码将通过其类属性找到股票价格元素并使用显示其文本内容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())
最后一件事!
 将最后一段代码放入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')
测试时间到了!
现在你已经有了完整的代码,是时候运行一些测试了。
查看亚马逊的股价:
结论
我希望本文能帮助您了解 Python 中的 CLI 开发,并为您提供一个有趣且有用的 Python 项目想法。
鏂囩珷鏉ユ簮锛�https://dev.to/code_jedi/lets-build-a-stock-price-cli-with-python-g28 后端开发教程 - Java、Spring Boot 实战 - msg200.com
            后端开发教程 - Java、Spring Boot 实战 - msg200.com
          

