我真的是Python新手,这个问题可能太基本了,以至于我现在似乎无法在线找到任何答案。
我一直试图遍历9个股票报价器的列表,以下称为“符号”,以从YahooFinancials检索每个报价器的资产负债表,现金流量表和损益表。
曾经使用for symbol in ecommerce():
创建一个循环,但在下面收到了TypeError。
from yahoofinancials import YahooFinancials
import pandas as pd
import requests
import numpy as np
from datetime import datetime
ecommerce = ['CTRP', 'EBAY', 'GRUB', 'BABA', 'JD', 'EXPE', 'AMZN', 'BKNG', 'MPNGF']
for symbol in ecommerce():
df_income_statement = scrape_table('https://finance.yahoo.com/quote/' + symbol + '/financials?p=' + symbol)
df_income_statement
df_cash_flow = scrape_table('https://finance.yahoo.com/quote/' + symbol + '/cash-flow?p=' + symbol)
df_cash_flow
balance_sheet_url = 'https://finance.yahoo.com/quote/' + symbol + '/balance-sheet?p=' + symbol
df_balance_sheet = scrape_table(balance_sheet_url)
预期结果:带有资产负债表“ CTRP”,“ EBAY”,“ GRUB”,“ BABA”,“ JD”,“ EXPE”,“ AMZN”,“ BKNG”,“ MPNGF”的数据框
TypeError: 'list' object is not callable
from yahoofinancials import YahooFinancials import pandas as pd import requests import numpy as np from datetime import datetime
ecommerce = ['CTRP', 'EBAY', 'GRUB', 'BABA', 'JD', 'EXPE', 'AMZN', 'BKNG', 'MPNGF']
for symbol in ecommerce(): df_income_statement = scrape_table('https://finance.yahoo.com/quote/' + symbol + '/financials?p=' + symbol) df_income_statement
答案 0 :(得分:2)
如果您编写ecommerce()
,Python会假定您要调用名称为ecommerce
引用的函数(可调用),但是您要遍历整个列表(电子商务包含一个列表) )。
因此,您只需要删除()。您可以从以下内容开始:
for symbol in ecommerce:
income_statement_dataframes= pd.read_html('https://finance.yahoo.com/quote/' + symbol + '/financials?p=' + symbol)
使用此代码,income_statement_dataframes
应该包含一个数据帧列表。网址所引用的网页上每个html表一个数据帧。
您只需要检查它是哪个表即可。如果幸运的话,您可以通过这种方式使用它。如果在列表的元素之间找不到可用形式的表(例如,如果html更加邪恶),则可以查看BeautifulSoup(导入bs4)。