【发布时间】:2018-02-16 00:27:08
【问题描述】:
我对 python 有点陌生,我的代码有一些问题。对于我尝试做的任何建议,我们将不胜感激。
import pandas as pd
from bs4 import BeautifulSoup
import requests
def trade():
tickers = ["AAPL","AMZN", "INTC", "MSFT", "SNAP"]
for ticker in tickers:
url = "http://finance.yahoo.com/quote/%s?p=%s"%(ticker,ticker)
res = requests.get(url)
soup = (BeautifulSoup(res.content, 'lxml'))
table = soup.find_all('table')[0]
df = pd.read_html(str(table))
print("DF")
print(df)
df_string = str(df)
print(df_string_parse)
print(type(df_string_parse))
当我查看 df 时,它会显示这样的字符串
[ 0 1
0 Previous Close 167.37
1 Open 169.79
2 Bid 157.23 x 300
3 Ask 157.29 x 500
4 Day's Range 169.00 - 173.09
5 52 Week Range 134.84 - 180.10
6 Volume 51124085
7 Avg. Volume 33251246]
我想要做的是将每个股票代码的表格存储到数据框中,并将它们合并在一起,如下所示。或者我想如果有办法,我可以把它变成字典,这样我就可以更容易地使用它的变量。
APPL AMAZN INTC MSFT SNAP
Previous Close
Open
Bid
Ask
Day's Range
Volume
Avg. Volume
目前,我面临两个问题:
- 使用pd.read_html(str(table))后如何将表格转成数据框和/或字典
- 如何分别存储每个代码的结果最终合并 他们在一起?我知道如何使用 for 循环来一一阅读, 但我似乎不知道如何以这种方式存储它们。
【问题讨论】:
标签: python pandas numpy web-scraping beautifulsoup