有没有办法将我网页上的数据转换成熊猫DataFrame?将数据转换为熊猫数据帧
刮掉的数据是股票基本面数据例如。 abt: 2.71 6.00
ABT =股票行情,2.71 =价格以预订比和6.00 = PEG比率
我试图声明变量具有空数据帧,并用于.append()
功能,但没有运气
即时猜测的数据之前,必须以某种方式转换它可以传递给一个数据框,但我现在知道如何去做。
代码重做与评论的建议,现在数据框出来了空???
import time
import urllib.request
import urllib.parse
import pandas as pd
sp500short = ['a', 'aa', 'aapl', 'abbv', 'abc', 'abt', 'ace', 'aci', 'acn', 'act', 'adbe', 'adi', 'adm', 'adp']
#stock = 'a'
data = []
color_list = ['<span style="color:#aa0000;">', '<span style="color:#008800;">']
color_close = '</span>'
def finvizPBStats(stock):
try:
sourceCode = urllib.request.urlopen('http://finviz.com/quote.ashx?t='+stock).read()
sourceCodeString = sourceCode.decode()
pbr = sourceCodeString.split('P/B</td><td width="8%" class="snapshot-td2" align="left"><b>')[1].split('</b></td>')[0]
for color in color_list:
if color in pbr:
pbr = pbr.split(color)[1].split(color_close)[0]
pbr = float(pbr)
except Exception as e:
if Exception:
pass
return
def finvizPEGStats(stock):
try:
sourceCode = urllib.request.urlopen('http://finviz.com/quote.ashx?t='+stock).read()
sourceCodeString = sourceCode.decode()
PEG = sourceCodeString.split('PEG</td><td width="8%" class="snapshot-td2" align="left"><b>')[1].split('</b></td>')[0]
for color in color_list:
if color in PEG:
PEG = PEG.split(color)[1].split(color_close)[0]
PEG = float(PEG)
except Exception as e:
if Exception:
pass
return
for stock in sp500short:
pbr = finvizPBStats(stock)
PEG = finvizPEGStats(stock)
data.append([pbr, PEG])
df = pd.DataFrame(index=sp500short, columns=['pbr', 'PEG'])
print(df)
什么样的数据结构保存您的原始数据?如果它兼容,就可以像'df(input_data)'一样简单。 –
你没有回报任何东西。这样做:'返回pbr,PEG'。另外,在你的函数结构上,这可能会引发错误,除非你初始化pbr和PEG。例如,你可以尝试在try/except语句之前的函数中添加'pbr,PEG = 0,0'。 – AlexG