网站链接: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_class(“ v-input_slot”)) obj.select_by_index(10)
答案 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')