假設你需要獲取51job人才網上java人才的需求數量,首先你需要分析51job網站的搜索這一塊是怎么運作的,通過解析網頁的源代碼,我們發現了以下一些信息:
1. 搜索時頁面請求的URL是 http://search.51job.com/jobsearch/search_result.php
2. 請求所用的方法為:POST
3. 返回的頁面的編碼格式為:GBK
4.
假設我們想獲取搜索java人才時結果頁面中顯示的需求數量,我們發現數量位于返回的HTML數據中這樣的一段代碼之中:<td>1-30
/ 14794</td>,于是我們可以得到這樣的一個模式:".+1-\d+ /
(\d+).+",第一個分組的內容就是我們需要的最終數據,有關java中的模式,請參考java文檔中Pattern類的介紹
5.
另外做為POST請求,頁面向服務器發送的數據如下(這個很容易能過prototype這樣的js框架抓取到,參考我的其它博客介紹):lang=c&
amp;
amp;stype=1&postchannel=0000&fromType=1&line=&keywordtype=2&keyword=java&btnJobarea=%E9%80%89%E6%8B%A9%E5%9C%B0%E5%8C%BA&jobarea=0000&image=&btnFuntype=%E9%80%89%E6%8B%A9%2F%E4%BF%AE%E6%94%B9&funtype=0000&btnIndustrytype=%E9%80%89%E6%8B%A9%2F%E4%BF%AE%E6%94%B9&industrytype=00
對于第5條中的數據哪些是服務器真正需要的我們不管,全部發送過去就是了。有了這些準備,我們就可以真正開始通過java發送請求,并獲得最終數據了。
我們定義Resource類,這個類封裝所有的與請求有關的信息,Resource包括以下屬性:























創建Resource的一個對象,封裝請求數據:
res.set

以下為抓取內容的代碼:




































如果不需要通過提交表單數據給服務器就能抓取到最終結果,顯然上面的操作就有點小題大作了,刪除上面的部分代碼就可以了。
補充:上文僅做java學習用,項目中需要實現網頁抓取,可以去了解一下JSOUP(http://jsoup.org/)和HTTPComponent(http://hc.apache.org/)