有什么方法可以获取每只股票(200支以上)的所有季度业绩数据,并使用python将其存储在excel中?

时间:2018-12-02 17:33:54

标签: python web web-scraping

网站链接:http://opstra.definedge.com/historical-results-timings。因此,每个相应股票都有季度结果日期,我想将相应股票的每个日期存储在excel中。我是python的新手,因此不知道如何通过网络对其进行剪贴。我尝试了但没有工作。下面是代码:

从硒导入Webdriver

从selenium.webdriver.support.ui导入选择

driver = webdriver.Chrome(“ C:\ Users \ DELL \ Documents \ Python_module \ chromedriver.exe”) driver.get(“ http://opstra.definedge.com/historical-results-timings”)

driver.maximize_window()

obj = Select(driver.find_element_by_id(“ searchLanguage”))

obj.select_by_index(0)

obj = Select(driver.find_element_by_class(“ v-input_slot”)) obj.select_by_index(10)

2 个答案:

答案 0 :(得分:0)

简短的回答:是的。

长答案: Python提供了许多库来像BeatifulSoup这样从网上抓取数据,并像XlsxWriter这样来编写Excel。

但是,我想您也可以找到一种无需剪贴技术即可收集数据的API。

答案 1 :(得分:0)

您不需要硒。您可以使用与页面用于滚动更新页面相同的源js文件获取股票列表。您可以通过请求获取该信息,然后遍历发出xhr请求的库存清单,以获取用于馈送页面的json数据。我将单独的股票数据帧连接在一起,并使用ast将字符串stocks转换为列表stocks

我通过Session重新使用了连接。

import requests 
from bs4 import BeautifulSoup as bs
import pandas as pd
import ast

with requests.Session() as s:
    listings = s.get('http://opstra.definedge.com/js/view-HistoricalResultsTimings-vue.f75d8b5c.js')
    stocks = listings.text.split('stocks:')[1].split(',columns')[0]
    stocks = ast.literal_eval(stocks)
    headers = ['Date', 'Quarter', 'Symbol', 'Time', 'Year']
    df = pd.DataFrame(columns = headers)
    for item in stocks:
        data = requests.get(baseURL + item).json()
        dfCurrent = pd.DataFrame(data)
        df = pd.concat([df, dfCurrent])
df = df.reset_index(drop=True)
df.to_csv(r"C:\Users\User\Desktop\test.csv", encoding='utf-8')