最近股市大牛,相信這里的不少朋友都在炒股,當(dāng)然上班時間老是開著網(wǎng)頁看股市或是盯著紅紅綠綠的專業(yè)股票軟件是總是擔(dān)心被周圍同事看到的,但又不時的想著大盤是漲了還是跌了,自己的股票又是如何呢。
于是用 Java 寫了一套簡單的股市信息跟蹤的小程序,Console 的,用于抓取相應(yīng)的股市信息并顯示到 console 中,誰也不會想到這個東西會是用來看股市的吧。
這套小小的程序用到了幾個非常簡單的技術(shù),HttpClient 和 正則表達(dá)式。程序功能非常簡單,找到含有股市數(shù)據(jù)的頁面,使用 HttpClient 抓取下來,通過正則表達(dá)式匹配自己需要的內(nèi)容,在 Console 上打印出來。
準(zhǔn)備花兩篇文章簡單的介紹這個小系統(tǒng)中的實(shí)現(xiàn)細(xì)節(jié),當(dāng)然這只是簡單的介紹,其實(shí)我們再稍微用點(diǎn)其他的技術(shù),可以做出更多更實(shí)用的小工具。比如我就寫了個小爬蟲,把某個基金網(wǎng)站上的基金凈值數(shù)據(jù)爬來了,足足有10W條,供我做基金形勢分析之用,拿到這些原始數(shù)據(jù),再動用一下自己的頭腦,再配合一些方便的工具,比如 Excel,我們便可以用實(shí)際數(shù)據(jù)去輔助投資理財。
首先我們來簡單的介紹我們用到的第一個工具,HttpClient。
HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。
以下列出的是 HttpClient 提供的主要的功能,要知道更多詳細(xì)的功能可以參見 HttpClient 的主頁。
實(shí)現(xiàn)了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
支持自動轉(zhuǎn)向
支持 HTTPS 協(xié)議
支持代理服務(wù)器等
HttpClient 可以在http://jakarta.apache.org/commons/httpclient/downloads.html下載
HttpClient 基本功能的使用
GET 方法
使用 HttpClient 需要以下 6 個步驟:
1. 創(chuàng)建 HttpClient 的實(shí)例
2. 創(chuàng)建某種連接方法的實(shí)例,在這里是 GetMethod。在 GetMethod 的構(gòu)造函數(shù)中傳入待連接的地址
3. 調(diào)用第一步中創(chuàng)建好的實(shí)例的 execute 方法來執(zhí)行第二步中創(chuàng)建好的 method 實(shí)例
4. 讀 response
5. 釋放連接。無論執(zhí)行方法是否成功,都必須釋放連接
6. 對得到后的內(nèi)容進(jìn)行處理
根據(jù)以上步驟,我們來編寫用GET方法來取得某網(wǎng)頁內(nèi)容的代碼。
根據(jù)這樣的過程,我們便可以寫出一個簡單的抓取頁面的方法,該方法返回抓到的頁面數(shù)據(jù)。傳入的參數(shù)是頁面的 URL。
protected String getURLResponse(String url) {
try {
HttpClient client = new HttpClient();
GetMethod method = new GetMethod(url);
int returnCode = client.executeMethod(method);
String response = null;
if (returnCode == 200) {
response = EncodingUtil.getString(method.getResponseBody(), "gb2312");
}
method.releaseConnection();
return decode(response);
} catch (Exception e) {
return null;
}
}
HttpClient 是一個很實(shí)用的工具,用它,我們可以做很多和 Http 有關(guān)的事情。
大家可以參考: http://www.ibm.com/developerworks/cn/opensource/os-httpclient/ 來初步了解 HttpClient 的功能。
或是去找找 Jakarta.Commons.Cookbook 或者 Jakarta.Commons.Online.Bookshelf,上面介紹了包括 HttpClient 在內(nèi)的很多 Apache Jakarta Commons 項(xiàng)目,相信合理使用,會讓你事半功倍的。
下一篇我們將介紹一下如何用正則表達(dá)式處理我們抓取到的數(shù)據(jù)。
posted on 2007-06-21 22:11
steady 閱讀(1919)
評論(5) 編輯 收藏 所屬分類:
技術(shù)隨筆