使用 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