【发布时间】:2020-09-19 21:14:42
【问题描述】:
免责声明:初学者 如果已经发布了重复的问题,将删除
我正在寻找创建一个脚本,该脚本将从多个网页中获取数据并将其作为列存储在数据框中。 正如你从下面看到的,我可以成功地获取一只股票的数据,我想知道有没有人有想法来修改它,所以我可以使用类似
stocklist = ["AMZN", "GOOG", "TSLA"]
下面的脚本:
from time import sleep
from selenium import webdriver
import pandas as pd
driver = webdriver.Chrome('/chromedriver')
stock_list = ['AMZN']
values = []
metrics = []
def stocks():
for i in stock_list:
driver.get(f"http://finviz.com/quote.ashx?t={i}")
value = driver.find_elements_by_xpath("//td[@class='snapshot-td2']")
metric = driver.find_elements_by_xpath("//td[@class='snapshot-td2-cp']")
for i in metric:
metrics.append(i.text)
for a in value:
values.append(a.text)
def frames():
d = pd.DataFrame({'Metrics': metrics,'AMZN': values})
print(d)
d.to_csv("AMZN.csv")
理想情况下,希望为每只新股票及其对应值创建一个列。 目前输出如下:
Metrics AMZN
0 Index S&P 500
1 P/E 116.67
2 EPS (ttm) 20.93
3 Insider Own 11.20%
4 Shs Outstand 498.00M
.. ... ...
67 SMA20 2.96%
68 SMA50 10.13%
69 SMA200 27.34%
70 Volume 689,073
71 Change 0.93%
【问题讨论】:
-
你能给我们举个例子说明你的数据框应该是什么样子吗?
-
您想获取列表中的所有列名..?
-
道歉,添加输出描述
-
随便
d = pd.DataFrame({stock_label: value_list for stock_label, value_list in zip(stock_list, values)}, index=metrics) -
不,恐怕只是一遍又一遍地给出表格中的第一个值,尽管
AMZN GOOG Index S&P 500 116.67 P/E S&P 500 116.67布局很好
标签: python arrays pandas list dataframe