五分钟看一次股票被老板叼,连夜写个Python股票价格CLI。

 前言

     今天兴高采烈的去上班,因为我买的股票大赚,所以美滋滋!当天上班就肯定没啥状态嘛,心思都在股票上!随便涨几个点就是一个月的工资,那肯定还是香一些的,所以今天格外关注股票价格信息,五分钟不到就看一次,没想到被老板抓到了,狠狠的批了一顿!确实不好意思,所以我就用Python构建一个股票价格CLI。这样就再也不用担心老板揪我小辫子了!

  1. 阅读你想要得到的价格的代码。
  2. 擦拭指定的滴答机的最新价格。
  3. 显示刮掉的价格。

我们开始吧

首先,创建一个新的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项目想法。需要完整项目代码点这里即可获取

Guess you like

Origin blog.csdn.net/weixin_43881394/article/details/121141396