前言
今天兴高采烈的去上班,因为我买的股票大赚,所以美滋滋!当天上班就肯定没啥状态嘛,心思都在股票上!随便涨几个点就是一个月的工资,那肯定还是香一些的,所以今天格外关注股票价格信息,五分钟不到就看一次,没想到被老板抓到了,狠狠的批了一顿!确实不好意思,所以我就用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返回一个错误。然后,这个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变量,按照Yahoo Finance的url结构,CLI可以更改url基于代码代码的变量,如下所示:
Main.py
url = 'https://finance.yahoo.com/quote/' + ticker + '?p=' + ticker + '&.tsrc=fin-srch'
response = requests.get(url)
例如,如果提供的代码是AMZN,CLI会刮掉的这个网址 .
如果所提供的代码为AAPL,CLI会刮掉的这个网址 .
完整代码:
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财产:
既然你有了这个元素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')
我已经将完整代码的链接作为我的免费GumRoad产品之一。这里。我经常在那里发布很酷的项目和开发人员资源,跟随将不胜感激;)
该测试了!
现在您已经有了完整的代码,现在是运行一些测试的时候了。
查看亚马逊的股价:
看看苹果的股价:
输入一个无效的代码:
结语
我希望本文能帮助您了解Python中的CLI开发,并为您提供一个有趣而有用的Python项目想法。需要完整项目代码点这里即可获取