Git Product home page Git Product logo

tsrtc's Introduction

Taiwan Stock Real Time Crawler

這是一個會爬台股即時資訊的爬蟲,此外也分析了台灣證券交易所的 API。

討論室

有問題的話可以到 Gitter.im 發問,會盡快回答

環境需求

  • Python2 or Python3

安裝相關套件

pip install requests

使用方法

python crawl.py

可以爬當下 50 隻當沖股票的即刻資訊。

注意事項

更改清單

若要改抓取的清單,可以把 stocknumber.csv 中的股票編號換掉就好了。

資料完整性

雖然說官方文件說 5 秒會更新一次,但是爬蟲實際上戳,即便已經改成 3 秒戳一次了,每天總會漏掉一些交易,所以價量圖並不完善,約只能涵蓋 99% 的資料。

python genTodayVolumeFigure.py 可以產生今天的價量圖,ex:

9914
250.00:      39
250.50:     123
251.00:       8
251.50:      58
252.00:     122
252.50:      87
253.00:     198
253.50:      91
254.00:      38
254.50:     103
255.00:      29
255.50:       9
256.00:       1
(99.77974%)

資料整理

每天跑完後,可以執行 python cleanTodayDuplicateData.py 刪除重複抓到的資料和依照時間排序。

資料更新

每天收盤後我抓完會 push 到 github 上,如果需要的話可以 git pull 我,當然如果你也有自己抓的話,每天也可以自己更新囉。

因為機器空間不足,所以過去的資料放到 Mega 上:

Crontab 產生

python genCrontabScript.py 可以產生每五秒戳一次的 crontab。

資料格式

每天的資料會存在 data 中,當天的日期資料夾內(ex. 20150303),裡面把所有抓的資料按股票編號放 XXXX.csv 中,XXXX 就是股票編號。

檔案內每一行為一個抓取一次下即刻的資訊,分別是:

時間, 最近成交價, 當盤成交量, 累積成交量, 最佳五檔(賣價), 最佳五檔(賣量), 最佳五檔(買價), 最佳五檔(買量)

ex. 13:30:00,43.25,616,6690,43.25_43.30_43.35_43.40_43.45_,216_285_90_274_201_,43.20_43.15_43.10_43.05_43.00_,3_1_23_91_424_

更新當沖清單

  1. 下載 台灣證券交易所-當日沖銷交易標的及統計 最新清單
  2. 可能要更改 getCurrentList.py 的檔案名稱
  3. python getCurrentList.py 得到 stocknumber.csv

資料來源

台灣證券交易所 - 基本市況報導網站

證交所 API Document (偽)

經過解析 基本市況報導網站 下所執行的 Javascript 檔(可以參考 /ctrl-reference ),整理出了 twse 的 API 清單如下:

  • getChartOhlcStatis
  • getDailyRangeOnlyKD
  • getDailyRangeWithMA
  • getOhlc
  • getShowChart
  • getStock
  • getStockInfo
  • getStockNames
  • resetSession

getStockInfo Usage

其中 getStockInfo 可以用來抓取當前的交易資訊,用法如下:

http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=STOCK_NUMBER&_=CURRENT_TIME

參數設置:

  • STOCK_NUMBER 是該隻股票的種類和號碼,ex. tse_1101.tw_20150624,也可以用 | 一次 query 很多筆股票資料。ex. tse_1101.tw_20150624|tse_1102.tw_20150624|tse_1103.tw_20150624
  • CURRENT_TIME 是當下的 epoch time,單位是毫秒

getStockInfo Response

分析 response 的 JSON 可以得到:

  • msgArray
  • queryTime
  • rtcode
  • referer
  • rtmessage
  • userDelay

其主要資訊都在 msgArray 中,分為以下幾類:

股票資訊

  • c:股票代號,ex. 1101
  • ch:Channel,ex. 1101.tw
  • ex:上市或上櫃,ex. tse
  • n:股票名稱,ex. 台泥
  • nf:似乎為全名,ex. 台灣水泥股份有限公司

即時交易資訊

  • z:最近成交價,ex. 42.85
  • tv:Temporal Volume,當盤成交量,ex. 1600
  • v:Volume,當日累計成交量,ex. 11608
  • a:最佳五檔賣出價格,ex. 42.85_42.90_42.95_43.00_43.05_
  • f:最價五檔賣出數量,ex. 83_158_277_571_233_
  • b:最佳五檔買入價格,ex. 42.80_42.75_42.70_42.65_42.60_
  • g:最佳五檔買入數量,ex. 10_28_10_2_184_
  • tlong:資料時間,ex. 1424755800000
  • t:資料時間,ex. 13:30:00
  • ip:好像是一個 flag,3 是暫緩收盤股票, 2 是趨漲, 1 是趨跌, ex. 0

日資訊

  • d:今日日期,ex. 20150224
  • h:今日最高,ex. 42.90
  • l:今日最低,ex. 42.35
  • o:開盤價,ex. 42.40
  • u:漲停點,ex. 45.10
  • w:跌停點,ex. 39.20
  • y:昨收,ex. 42.15

不明所以

  • i: ex. 01
  • it: ex. 12
  • p: ex. 0
  • tk0: ex. 1101.tw_tse_20150224_B_9999310874
  • tk1: ex. 1101.tw_tse_20150224_B_9999293545

以上資訊由於找不到官方 API,為分析所得,可能有誤。

附上免責聲明

本人旨在為廣大投資人提供正確可靠之資訊及最好之服務,作為投資研究的參考依據,若因任何資料之不正確或疏漏所衍生之損害或損失,本人將不負法律責任。是否經由本網站使用下載或取得任何資料,應由您自行考量且自負風險,因任何資料之下載而導致您電腦系統之任何損壞或資料流失,您應負完全責任。

聯絡我

有 Bug 麻煩跟我說:

最後更新時間:2017/02/15

我的其他專案

台灣上市上櫃股票爬蟲,含歷史資料

tsrtc's People

Contributors

asoul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tsrtc's Issues

無法從 mis.tse.com.tw 取得資料

用 python crawl.py 無法抓到資料,會停住。
試著加上 timeout=30,則會丟出重連失敗的 exception。
試著用 wget + 網址去抓,會有 Tried to open a foreign host with url: http://1.1.1.1 的錯誤,我想是 mis.tse.com.tw 問題。

ImportError: No module named utils on Windows 8.1

Dear Asoul,

    I run crawl.py with Python 2.7.12.  But the following error occurred.

C:\workspace_Python\tsrtc>python crawl.py
Traceback (most recent call last):
File "crawl.py", line 8, in
import requests
File "c:\Python27\lib\site-packages\requests__init__.py", line 60, in <module

from .packages.urllib3.exceptions import DependencyWarning

File "c:\Python27\lib\site-packages\requests\packages__init__.py", line 29, i
n
import urllib3
File "c:\Python27\lib\site-packages\urllib3__init__.py", line 8, in
from .connectionpool import (
File "c:\Python27\lib\site-packages\urllib3\connectionpool.py", line 35, in
from .request import RequestMethods
File "c:\Python27\lib\site-packages\urllib3\request.py", line 3, in
from .filepost import encode_multipart_formdata
File "c:\Python27\lib\site-packages\urllib3\filepost.py", line 9, in
from .fields import RequestField
File "c:\Python27\lib\site-packages\urllib3\fields.py", line 2, in
import email.utils
ImportError: No module named utils

Do you have any suggestion?

Thanks in advance!

snowuyl

資料

想請問您一下
不知道您是否有下載到台指期近月的資料呢??

謝謝

Failed to establish a new connection: [Errno 110] Connection timed out',

Dear Asoul,

    I changed stocknumber.csv to contain 2330 only. And then I type the following command to get stock information.

python crawl.py

But the following error occurred.
HTTPConnectionPool(host='1.1.1.3', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f14c4029e10>: Failed to establish a new connection: [Errno 110] Connection timed out',))

Do you have any suggestion to fix this issue?

Thanks in advance!

snowuyl

No data version

Can you release the version for just only contain code?
Because when I cloning this repository, it takes long long time for downloading the data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.