慢牛系列一:如何抓取股票數據


長假回來,大家應該很累吧?今天股市大漲,希望炒股的同學十月里能挖掘到好機會!

 

上次在園子里發布《我的兼職創業歷程》后,有同學問我怎么獲取股票數據,我搜了下園子里的文章,寫這么方面的挺多,比如下面兩篇:

實時股票數據接口

程序員學炒股(1) 基礎數據准備

 

今天把數據抽取的代碼整理了下,做了個控制台程序,這個程序主要抓取了新浪網的行業數據、股票信息,股價日、周、月線的數據,並把數據存儲到數據庫。文章末尾提供代碼下載網址,代碼可運行,設置好數據庫連接字符串后,即可抽取數據了。

 

數據抽取主要是找到合適的數據源,分析和提取數據。

一、數據源

免費的接口主要是各大門戶網站和財經類網站,比如新浪網易的財經頻道,或者東方財富和和訊網站等。

專門做接口的數據聚合網站 API.CN,付費的有聚合數據股票接口等。

另外如果想了解各種指數的成分股,比如上證50,深戶300等指數的成分股,可以參考 上海證券交易所 深圳證券交易所,這兩個網站提供兩市的所有股票數據,提供了Excel下載,下載以后導入到數據即可。

二、分析和提取數據

通過瀏覽器的F12或者Fiddler查看網絡請求數據,數據最好返回的是json格式,json格式的數據非常容易提取,利用Newtonsoft.Json把json對象轉換成dynamic對象,訪問json數據真是方便極了,沒有用dynamic對象之前,一直是建立和json對象一致的類,然后在反序列化,現在不需要了,代碼示例如下:

 public IList<DataAccess.Stock> GetStocks(DataAccess.StockCategory category)
        {
            var url = "http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?page=1&num=900&sort=symbol&asc=1&node={0}&symbol=&_s_r_a=init";
            url = string.Format(url, category.code.Trim('"'));
            string content = getRequestContent(url);
            dynamic stocks = Newtonsoft.Json.JsonConvert.DeserializeObject(content);

            IList<DataAccess.Stock> list = new List<DataAccess.Stock>();
            foreach (var stock in stocks)
            {
                list.Add(new DataAccess.Stock
                {
                    code = stock.code,
                    symbol = stock.symbol,
                    name = stock.name
                });
            }
            return list;
        }
數據提取

如果返回數據不是json格式,那就需要用正則表示來提取了,這方面就要看情況了,我的代碼里部分用到了正則表達式。

另外,為了防止網站接口變化,你需要建立一個接口類,為應用多做幾個接口的實現,應對后續網站接口的變化。

 

好了,更詳細的可以看我的源碼,如果有其他問題可以在微信公眾號里留言,我會盡快回復^_^

 

歡迎關注我的個人創業項目:

慢牛股票APP(安卓版),專注股票技術分析產品和服務。

慢牛股票

 

慢牛股票微信公眾號:

慢牛股票微信公眾號

PS:關注上面的微信公眾號,發送“我要源碼”即可獲得本示例所有源碼。

每天收盤執行控制台程序,兩市大概3000左右只個股,抽取數據完成后,您就可以用SQL各種查詢股票數據了。

如果數據有缺失的,您還是要去分析目標網站,自己再實現抽取,有什么問題可以在公眾號里發我。

最后,祝大家投資順利!文章寫得一般,大家見諒!歡迎點贊!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM