㈠ 怎麼學python爬取財經信息
本程序使用Python 2.7.6編寫,擴展了Python自帶的HTMLParser,自動根據預設的股票代碼列表,從Yahoo Finance抓取列表中的數據日期、股票名稱、實時報價、當日變化率、當日最低價、當日最高價。
由於Yahoo Finance的股票頁面中的數值都有相應id。
例如納斯達克100指數ETF(QQQ)
其中實時報價的HTML標記為
[html]view plain
<spanid="yfs_l84_qqq">87.49</span>
而標普500指數ETF(SPY)
其中實時報價的HTML標記為
[html]view plain
<spanid="yfs_l84_spy">187.25</span>
因此本數據抓取程序根據相應的id字元串來查找數據。具體來說就是先繼承HTMLParser,然後在自定義的子類中重載handle_data(self, data)方法,查找包含相應id字元串(例如實時報價的id字元串為"yfs_l84_"+股票代碼)的HTML標記,並輸出這個HTML標記中的數據(例如qqq的<span id="yfs_l84_qqq">87.49</span>,其中的數據87.49就是實時報價。)
樣本輸出:
數據依次是
數據日期 股票代碼 股票名稱 實時報價 日變化率 日最低價 日最高價
[python]view plain
05/05/(IBB)233.281.85%225.34233.28
05/05/(SOCL)17.480.17%17.1217.53
05/05/(PNQI)62.610.35%61.4662.74
05/05/2014xsdSPDRS&PSemiconctorETF(XSD)67.150.12%66.2067.41
05/05/2014itaiSharesUSAerospace&Defense(ITA)110.341.15%108.62110.56
05/05/2014iaiiSharesUSBroker-Dealers(IAI)37.42-0.21%36.8637.42
05/05/(VBK)119.97-0.03%118.37120.09
05/05/2014qqqPowerSharesQQQ(QQQ)87.950.53%86.7687.97
05/05/2014ewiiSharesMSCIItalyCapped(EWI)17.86-0.56%17.6517.89
05/05/(DFE)62.33-0.11%61.9462.39
05/05/(PBD)13.030.00%12.9713.05
05/05/(EIRL)38.52-0.16%38.3938.60
㈡ 怎樣用python提取不同股票csv里特定時間段的數據
用pandas庫,
import pandas as pd
data = pd.read_csv('train.csv')
train_data = data.values[0:TRAIN_NUM,1:]
train_label = data.values[0:TRAIN_NUM,0]
study.163.com/course/courseMain.htm?courseId=1000035
機器學習正好講了這個手寫識別的例子!
㈢ python如何獲得股票實時交易數據
使用easyquotation這個庫。(不用重復造輪子了)
github地址是:
https://github.com/shidenggui/easyquotation
㈣ python用什麼方法或者庫可以拿到全部股票代碼
首先你需要知道哪個網站上有所有股票代碼,然後分析這個網站股票代碼的存放方式,再利用python寫一個爬蟲去爬取所有的股票代碼
㈤ 如何使用Python獲取股票分時成交數據
可以使用爬蟲來爬取數據,在寫個處理邏輯進行數據的整理。你可以詳細說明下你的需求,要爬取的網站等等。
希望我的回答對你有幫助
㈥ python怎麼抓新浪百度股票數據 datareader
應該都是可以獲取的,一般獲取數據有兩個方法,get和post,在源碼能夠顯示的使用的是get,而post一般是用非同步載入的形式進行展現的。
㈦ 如何選取過去每個月股票的市值 python
類似,可以修改一下
股票漲跌幅數據是量化投資學習的基本數據資料之一,下面以python代碼編程為工具,獲得所需要的歷史數據。主要步驟有:
(1) #按照市值從小到大的順序活得N支股票的代碼;
(2) #分別對這一百隻股票進行100支股票操作;
(3) #獲取從2016.05.01到2016.11.17的漲跌幅數據;
(4) #選取記錄大於40個的數據,去除次新股;
(5) #將文件名名為「股票代碼.csv」。
具體代碼如下:
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 17 23:04:33 2016
獲取股票的歷史漲跌幅,並分別存為csv格式
@author: yehxqq151376026
"""
import numpy as np
import pandas as pd
#按照市值從小到大的順序活得100支股票的代碼
df = get_fundamentals(
query(fundamentals.eod_derivative_indicator.market_cap)
.order_by(fundamentals.eod_derivative_indicator.market_cap.asc())
.limit(100),'2016-11-17', '1y'
)
#分別對這一百隻股票進行100支股票操作
#獲取從2016.05.01到2016.11.17的漲跌幅數據
#選取記錄大於40個的數據,去除次新股
#將文件名名為「股票代碼.csv」
for stock in range(100):
priceChangeRate = get_price_change_rate(df['market_cap'].columns[stock], '20160501', '20161117')
if priceChangeRate is None:
openDays = 0
else:
openDays = len(priceChangeRate)
if openDays > 40:
tempPrice = priceChangeRate[39:(openDays - 1)]
for rate in range(len(tempPrice)):
tempPrice[rate] = "%.3f" %tempPrice[rate]
fileName = ''
fileName = fileName.join(df['market_cap'].columns[i].split('.')) + '.csv'
fileName
tempPrice.to_csv(fileName)
㈧ 怎麼用python計算股票
作為一個python新手,在學習中遇到很多問題,要善於運用各種方法。今天,在學習中,碰到了如何通過收盤價計算股票的漲跌幅。
第一種:
讀取數據並建立函數:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
from pylab import *
import pandas as pd
from pandas import Series
a=pd.read_csv('d:///1.csv',sep=',')#文件位置
t=a['close']
def f(t):
s=[]
for i in range(1,len(t)):
if i==1:
continue
else:
s.append((t[i]-t[i-1])/t[i]*100)
print s
plot(s)
plt.show()
f(t)
第二種:
利用pandas裡面的方法:
import pandas as pd
a=pd.read_csv('d:///1.csv')
rets = a['close'].pct_change() * 100
print rets
第三種:
close=a['close']
rets=close/close.shift(1)-1
print rets
總結:python是一種非常好的編程語言,一般而言,我們可以運用構建相關函數來實現自己的思想,但是,眾所周知,python中裡面的有很多科學計算包,裡面有很多方法可以快速解決計算的需要,如上面提到的pandas中的pct_change()。因此在平時的使用中應當學會尋找更好的方法,提高運算速度。
㈨ python讀取財經數據
提取日期數據基本語法
from WindPy import w
w.start()
當出現.ErrorCode==-103說明沒連接上,要start一下
w.wsd(security, fields, startDate = None, endDate= None , options = None)
opion 可選(period, 日期類型, 貨幣類型,前後復權)
提取財務數據基本語法
w.wss(security, fields, options = None)
提取板塊日序列基本語法
w.wses(sectorCode, fields, startDate = None, endDate = None, options = None)
提取板塊日截面數據基本語法
w.wsee(sectorCode, fields, options=None)
提取宏觀數據基本語法
w.edb(codes, startDate =None, endDate =None, options=None)
1.日期序列基本語法
ts.get_hist_data(stock,start,end)
注意:1.stock不能是集合,只能單個股票 2.需要帶上.sz或.sh 3.沒有field,只能取出數據後再切除.
2.pro用法
pro.daily(code, start, end, fields)
tushare引用語句
弊端也很明顯,一方面不能stock集合輸入,一次只能調取一個股票對應數據,另一方面tushare雖是免費試用,但有許可權限制。
基本語法
wb.get_data_yahoo(code, start, end)
wb.DataReader(code, 'yahoo', start, end)
沒法添加fields, 雖能集合適用,但出來的索引挺奇怪的
推薦使用定義函數或用for循環批量獲取數據
總體感覺wind api最舒服,但需要賬號,mac也不能直接調用wind api。還是推薦tushare的pro用法。
小白學習中,請指教=v=