如何解决尝试从数组中删除Yahoo Finance时“必须是str,而不是列表”
我正在通过Python编程开始学习之旅,因此我面临着无法弄清原因的基本错误
想法是通过Array“股票”并通过网络抓取从Yahoo获取当前价格
库存= 0 GGBR4 1 MRVE3 2 TAEE11 3毫克 4个HAPV3
我的代码:
#Workbook selection + sheet selection + range of stocks from the excel
workbook = gc.open_by_key('1DexwEtIPc2yA94QiWzWGR3ZZWo7YIZc00UX1CTMpdB8')
worksheet = workbook.worksheet('summary')
stocks = worksheet.get('stock_range')
df = pd.DataFrame.from_records(stocks)
for i in range(len(stocks)):
symbol = stocks[i]
url = 'https://finance.yahoo.com/quote/' + symbol + '.SA'
data = requests.get(url)
soup = bs4.BeautifulSoup(data.text,"html.parser")
price = soup.findAll('div',{'class': 'My(6px) Pos(r) smartphone_Mt(6px)'})[0].find('span').text
我收到的错误消息:
TypeError Traceback (most recent call last)
<ipython-input-8-fae00e25d5a8> in <module>()
1 for i in range(len(stocks)):
2 symbol = stocks[i]
----> 3 url = 'https://finance.yahoo.com/quote/' + symbol + '.SA'
4 data = requests.get(url)
5 soup = bs4.BeautifulSoup(data.text,"html.parser")
TypeError: must be str,not list
解决方法
我通过调整股票清单来运行您的示例,它运行良好:
import $ from "jquery";
import "jqueryui";
但是,您不需要获取索引即可通过列表运行。下面的方法更有意义,并且可读性更高:
import requests
import bs4
stocks = ['GGBR4','MRVE3','TAEE11','MGLU3','HAPV3']
for i in range(len(stocks)):
symbol = stocks[i]
url = 'https://finance.yahoo.com/quote/' + symbol + '.SA'
data = requests.get(url)
soup = bs4.BeautifulSoup(data.text,"html.parser")
price = soup.findAll('div',{'class': 'My(6px) Pos(r) smartphone_Mt(6px)'})[0].find('span').text
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。