我正在建立一个谷歌表来跟踪我持有的股票的价格。我有一个运行的API,它连接到GoogleSheets和我自己的python应用程序
我的谷歌表是这样的
Stock | Previous close
AAPL | 316.73
NVDA | 348.71
SPOT | 191.00
我目前运行的代码如下
import requests
import gspread
from oauth2client.service_account import ServiceAccountCredentials
sheet = client.open("Stock").sheet1
AAPL = sheet.cell(2,1).value
url = ('https://ca.finance.yahoo.com/quote/'+AAPL+'?p='+AAPL+'&.tsrc=fin-srch')
response = requests.get(url)
htmltext = response.text
splitlist = htmltext.split("Previous Close")
afterfirstsplit =splitlist[1].split("\">")[2]
aftersecondsplit = afterfirstsplit.split("</span>")
datavalue = aftersecondsplit[0]
sheet.update_cell(2,2,datavalue)
#这会将我的谷歌表中的值更新为以前的收盘价
对于每个单独的股票,我会复制和粘贴,更改股票符号,以找到下一个报价的价值。 我知道有一种方法可以使用语句来自动化这个过程。我尝试了以下方法,但无法根据需要进行更新。在这一点上,我遇到了一堵墙,我非常感谢任何关于如何使这个功能自动化的帮助或见解
tickers = {sheet.cell(2,1).value : [],
sheet.cell(3,1).value : [],
sheet.cell(4,1).value : [],
sheet.cell(5,1).value :[]}
for symbols in tickers:
url = ('https://ca.finance.yahoo.com/quote/'+symbols+'?p='+symbols+'&.tsrc=fin-srch')
response = requests.get(url)
htmltext = response.text
splitlist = htmltext.split("Previous Close")
afterfirstsplit =splitlist[1].split("\">")[2]
aftersecondsplit = afterfirstsplit.split("</span>")
datavalue = aftersecondsplit[0]
sheet.update.cell(2,1,datavalue)
print (datavalue)
这样做会收集当前股票价格的所有值,并将其导入excel文件,但仅导入一个坐标。我不知道如何在FOR语句中每次增加sheet.update.cell(2,1,datavalue)中的“1”。我相信这是解决这个问题的办法,但如果有人有任何其他建议,我洗耳恭听
关于回答你问题的这一部分:
“我不知道如何在FOR语句中每次增加sheet.update.cell(2,1,datavalue)中的“1”。
这就是在for循环中递增计数器的方式,通常来说:
虽然计数器变量是大多数编程语言中使用的一种非常常见的模式(请参见Akib Rhast's answer),但更具python风格的方法是使用^{} builtin function :
什么是
enumerate
?如文档所述,
enumerate
获取您可以迭代的内容(如列表),并返回一个元组,其中计数器作为第一个元素,迭代器中的元素作为第二个元素:它还具有以内存高效的方式执行此操作的优点,并且直接与循环相关联
为什么我的
for
循环中有一个逗号这只是python中的语法糖,允许您解压缩元组或列表:
当
enumerate
返回一个元组时,基本上是同时将该元组上的每个元素分配给不同的变量相关问题 更多 >
编程相关推荐