對量化投資策略進行研究,第一步就是獲取我們需要的數據。使用歷史數據能夠對策略進行回測,以驗證策略的有效性和可信性。另一方面,量化投資本身也是一種對數據的研究,因此它也必須遵循數據分析的相關步驟。作為一個業余的量化投資愛好者,免費的數據來源主要有以下幾種途徑:
- Yahoo、Sina 財經的API
- Python的Tushare包
- 自己手工爬取
Tushare是一個免費、開源的Python財經數據接口包,它對數據進行了規整因此使用起來非常方便。盡管有如此優秀的數據包簡化了數據的采集工作,我們依然需要掌握從網站上爬取數據的技能,以獲取接口沒有提供的數據。本篇文章將會介紹一個小爬蟲,告訴大家如何從網站上獲取所有股票的代碼和名稱。
Python的urllib2庫是爬蟲的基礎,使用urllib2庫可以獲取網頁的內容,再使用正則表達式對所需的內容進行提取。我們在東方財富網的stocklist頁面下對股票的代碼和名字進行爬取,若要獲取該網頁下的全部內容,則需要以下幾步:
- 對服務器發送一個請求,使用urllib2的Request方法返回reguest對象
- 采用urlopen方法處理構建的request對象,返回服務器的應答(response對象)
- 對response對象使用read方法,返回網頁的內容
request
一些網站不允許程序直接采用上面的方式進行訪問,因此需要通過程序模擬瀏覽器的行為。通常采用的技術是在Requset方法的headers參數中設置agent,這樣服務器認為是瀏覽器發出的請求就可以正常respose。
url
在進行網頁內容的讀取過程中,會遇到這樣或那樣的原因導致異常使得讀取不成功,可以使用try-except捕獲相應的異常。
try
以上就是獲取網頁Html的過程,下面就需要在這茫茫Html中獲取我們需要的東西。這個時候需要用到正則表達式對需要的內容進行匹配。

上圖中藍色標出的部分是我們需要的股票名稱和代碼,采取以下正則表達式可以獲取需要的內容。正則表達式的寫法不是唯一的,但需要保證使用該正則不會出現遺漏或多匹配出不需要的其他信息的情況。如果你對正則表達式不太熟悉也沒有關系,Python提供了Beautiful Soup工具能夠更為簡單地提起Html或者Xml中的內容。
pattern
采用findall方法返回的是一個List,我們可以將爬取的結果放在一個名為stocklist的txt文件中。
reload
當然,更好的結果儲存方式是將結果放在數據庫中,下面就是以sqllite數據庫為例進行了一個爬取結果的儲存。將爬取結果放在數據庫中能夠方便調用,并且可以設置shell任務做定時的爬取和更新。
conn
以下是完整的代碼,供大家參考。
#coding:utf-8
好了,如何從網站上爬取我們需要的數據就介紹到這里。Python有著更為強大的爬蟲框架Scrapy,有興趣的同學可以學習一下。關于本次小爬蟲的全部代碼,可以關注我的微信公眾號,以后會有更多關于量化的原創文章哦!。
我的微信公眾號:會掘金的小鹿(NuggetsRoad)