㈠ matlab怎樣抓取Yahoo/Sina的股票數據
給你一個常式,用於抓取新浪股票2017年1月份的股票數據。程序如下:
clc;
clear;
year=2017;
season = 1 ;
fprintf('抓取%d年%d季度的數據中...\n', year, season)
[sourcefile, status] = urlread(sprintf('http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/000001/type/S.phtml?year=%d&season=%d', year));
expr2 = '<div align="center">(\d*\.?\d*)</div>';
[datafile, data_tokens] = regexp(sourcefile, expr2, 'match', 'tokens'); %從源文件中獲取目標數據
data = zeros(size(data_tokens));%產生和數據相同長度的0
for idx = 1:length(data_tokens)
data(idx) = str2double(data_tokens{idx}{1}); %轉變數據類型後存入data中
end
%%占坑打個廣告,代寫matlab程序(畢業設計,課程任務等)
%%信號處理,小波變換,PCA降維,ICA分析,分類器,濾波器等。QQ:1577232787
㈡ 如何用python 爬蟲抓取金融數據
獲取數據是數據分析中必不可少的一部分,而網路爬蟲是是獲取數據的一個重要渠道之一。鑒於此,我拾起了Python這把利器,開啟了網路爬蟲之路。
本篇使用的版本為python3.5,意在抓取證券之星上當天所有A股數據。程序主要分為三個部分:網頁源碼的獲取、所需內容的提取、所得結果的整理。
一、網頁源碼的獲取
很多人喜歡用python爬蟲的原因之一就是它容易上手。只需以下幾行代碼既可抓取大部分網頁的源碼。
為了減少干擾,我先用正則表達式從整個頁面源碼中匹配出以上的主體部分,然後從主體部分中匹配出每隻股票的信息。代碼如下。
pattern=re.compile('<tbody[sS]*</tbody>')
body=re.findall(pattern,str(content)) #匹配<tbody和</tbody>之間的所有代碼pattern=re.compile('>(.*?)<')
stock_page=re.findall(pattern,body[0]) #匹配>和<之間的所有信息
其中compile方法為編譯匹配模式,findall方法用此匹配模式去匹配出所需信息,並以列表的方式返回。正則表達式的語法還挺多的,下面我只羅列所用到符號的含義。
語法 說明
. 匹配任意除換行符「 」外的字元
* 匹配前一個字元0次或無限次
? 匹配前一個字元0次或一次
s 空白字元:[<空格> fv]
S 非空白字元:[^s]
[...] 字元集,對應的位置可以是字元集中任意字元
(...) 被括起來的表達式將作為分組,裡面一般為我們所需提取的內容
正則表達式的語法挺多的,也許有大牛隻要一句正則表達式就可提取我想提取的內容。在提取股票主體部分代碼時發現有人用xpath表達式提取顯得更簡潔一些,看來頁面解析也有很長的一段路要走。
三、所得結果的整理
通過非貪婪模式(.*?)匹配>和<之間的所有數據,會匹配出一些空白字元出來,所以我們採用如下代碼把空白字元移除。
stock_last=stock_total[:] #stock_total:匹配出的股票數據for data in stock_total: #stock_last:整理後的股票數據
if data=='':
stock_last.remove('')
最後,我們可以列印幾列數據看下效果,代碼如下
print('代碼',' ','簡稱',' ',' ','最新價',' ','漲跌幅',' ','漲跌額',' ','5分鍾漲幅')for i in range(0,len(stock_last),13): #網頁總共有13列數據
print(stock_last[i],' ',stock_last[i+1],' ',' ',stock_last[i+2],' ',' ',stock_last[i+3],' ',' ',stock_last[i+4],' ',' ',stock_last[i+5])
㈢ 爬取股票信息是網路爬蟲的應用場景嗎
網路爬蟲可以用來爬取股票信息,因為股票信息可以在互聯網上搜索並獲取,網路爬蟲可以自動收集這些信息。網路爬蟲是一種自動地抓取互聯網信息的程序,能夠按照指定的規則自動地抓取網站上的信息,是一種常見的數據抓取技術。
㈣ java 如何實現 獲取實時股票數據
一般有三種方式:
網頁爬蟲。採用爬蟲去爬取目標網頁的股票數據,去GitHub或技術論壇(如CSDN、51CTO)上找一下別人寫的爬蟲集成到項目中。
請求第三方API。會有專門的公司(例如網路API市場)提供股票數據,你只需要去購買他們的服務,使用他們提供的SDK,仿照demo開發實現即可。如下圖所示:
㈤ 怎麼學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
㈥ 如何用爬蟲抓取股市數據並生成分析報表
1. 關於數據採集
股票數據是一種標准化的結構數據,是可以通過API介面訪問的(不過一般要通過渠道,開放的API有一定的局限性)。也可以通過爬蟲軟體進行採集,但是爬蟲軟體採集數據不能保證實時性,根據數據量和採集周期,可能要延遲幾十秒到幾分鍾不等。我們總結了一套專業的爬蟲技術解決方案(Ruby + Sidekiq)。能夠很快實現這個採集,也可以後台可視化調度任務。
2. 關於展現
網路股票數據的展現,網頁端直接通過HTML5技術就已經足夠,如果對界面要求高一點,可以採用集成前端框架,如Bootstrap;如果針對移動端開發, 可以使用Ionic框架。
3. 關於觸發事件
如果是採用Ruby on Rails的開發框架的話,倒是很方便了,有如sidekiq, whenever這樣子的Gem直接實現任務管理和事件觸發。
㈦ 如何編程從免費股票軟體中提取實時數據
自己寫程序的話,一種方法是從已提供的信息源,例如webservice獲取數據。還有種辦法就是去連接提供即時信息的網頁硬解析。
代碼舉例如下:
Created on Thu Jul 23 09:17:27 2015
@author: jet
"""
DAY_PRICE_COLS = ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20', 'turnover']
DAY_PRICE_URL = '%sapi.finance.%s/%s/?code=%s&type=last'
INDEX_KEY = ['SH', 'SZ', 'HS300', 'SZ50', 'GEB', 'SMEB']
INDEX_LIST = {'SH': 'sh000001', 'SZ': 'sz399001', 'HS300': 'sz399300',
'SZ50': 'sh000016', 'GEB': 'sz399006', 'SMEB': 'sz399005'}
INDEX_DAY_PRICE_COLS= ['date', 'open', 'high', 'close', 'low', 'volume',
'chg', '%chg', 'ma5', 'ma10', 'ma20',
'vma5', 'vma10', 'vma20']
K_TYPE_KEY = ['D', 'W', 'M']
K_TYPE_MIN_KEY = ['5', '15', '30', '60']
K_TYPE = {'D': 'akdaily', 'W': 'akweekly', 'M': 'akmonthly'}
MIN_PRICE_URL = '%sapi.finance.%s/akmin?scode=%s&type=%s'
PAGE_TYPE = {'http': 'http://', 'ftp': 'ftp://'}
PAGE_DOMAIN = {'sina': 'sina.com.cn', 'ifeng': 'ifeng.com'}
URL_ERROR_MSG = '獲取失敗,請檢查網路狀態,或者API埠URL已經不匹配!'
get_hist_data.py
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 23 09:15:40 2015
@author: jet
"""
import const as ct
import pandas as pd
import json
from urllib2 import urlopen,Request
def get_hist_data(code = None, start = None, end = None, ktype = 'D'):
"""
功能:
獲取個股歷史交易數據
--------
輸入:
--------
code:string
股票代碼 比如:601989
start:string
開始日期 格式:YYYY-MM-DD 為空時取到API所提供的最早日期數據
end:string
結束日期 格式:YYYY-MM-DD 為空時取到最近一個交易日數據
ktype:string(default=D, 函數內部自動統一為大寫)
數據類型 D=日K線,W=周K線,M=月K線,5=5分鍾,15=15分鍾
30=30分鍾,60=60分鍾
輸出:
--------
DataFrame
date 日期
open 開盤價
high 最高價
close 收盤價
low 最低價
chg 漲跌額
p_chg 漲跌幅
ma5 5日均價
ma10 10日均價
ma20 20日均價
vma5 5日均量
vma10 10日均量
vma20 20日均量
turnover換手率(指數無此項)
"""
code = code_to_APIcode(code.upper())
ktype = ktype.upper()
url = ''
url = get_url(ktype, code)
print(url)
js = json.loads(ping_API(url))
cols = []
if len(js['record'][0]) == 14:
cols = ct.INDEX_DAY_PRICE_COLS
else:
cols = ct.DAY_PRICE_COLS
df = pd.DataFrame(js['record'], columns=cols)
if ktype in ct.K_TYPE_KEY:
df = df.applymap(lambda x:x.replace(u',', u''))
for col in cols[1:]:
df[col]=df[col].astype(float)
if start is not None:
df = df [df.date >= start]
if end is not None:
df = df[df.date <= end]
df = df.set_index('date')
return df
def code_to_APIcode(code):
"""
功能:
驗證輸入的股票代碼是否正確,若正確則返回API對應使用的股票代碼
"""
print(code)
if code in ct.INDEX_KEY:
return ct.INDEX_LIST[code]
else:
if len(code) != 6:
raise IOError('code input error!')
else:
return 'sh%s'%code if code[:1] in ['5', '6'] else 'sz%s'%code
def get_url(ktype, code):
"""
功能:
驗證輸入的K線類型是否正確,若正確則返回url
"""
if ktype in ct.K_TYPE_KEY:
url = ct.DAY_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
ct.K_TYPE[ktype], code)
return url
elif ktype in ct.K_TYPE_MIN_KEY:
url = ct.MIN_PRICE_URL % (ct.PAGE_TYPE['http'], ct.PAGE_DOMAIN['ifeng'],
code, ktype)
return url
else:
raise IOError('ktype input error!')
def ping_API(url):
"""
功能:
向API發送數據請求,若鏈接正常返回數據
"""
text = ''
try:
req = Request(url)
text = urlopen(req,timeout=10).read()
if len(text) < 15:
raise IOError('no data!')
except Exception as e:
print(e)
else:
return text
#測試入口
print(get_hist_data('601989','2015-07-11','2015-07-22'))
㈧ python如何獲得股票實時交易數據
使用easyquotation這個庫。(不用重復造輪子了)
github地址是:
https://github.com/shidenggui/easyquotation
㈨ 如何用爬蟲抓取股市數據並生成分析報表
推薦個很好用的軟體,我也是一直在用的,就是前嗅的ForeSpider軟體,
我是一直用過很多的採集軟體,最後選擇的前嗅的軟體,ForeSpider這款軟體是可視化的操作。簡單配置幾步就可以採集。如果網站比較復雜,這個軟體自帶爬蟲腳本語言,通過寫幾行腳本,就可以採集所有的公開數據。
軟體還自帶免費的資料庫,數據採集直接存入資料庫,也可以導出成excel文件。
如果自己不想配置,前嗅可以配置採集模板,我的模板就是從前嗅購買的。
另外他們公司不光是軟體好用,還有自己的數據分析系統,直接採集完數據後入庫,ForeSpider內部集成了數據挖掘的功能,可以快速進行聚類分類、統計分析等,採集結果入庫後就可以形成分析報表。
最主要的是他採集速度非常快,我之前用八爪魚的軟體,開伺服器采,用了一個月采了100萬條,後來我用ForeSpider。筆記本採的,一天就好幾百萬條。
這些都是我一直用前嗅的經驗心得,你不妨試試。
建議你可以下載一個免費版試一試,免費版不限制功能,沒有到期時間。