一、網頁資料大概分為三類:
1.靜态網頁
所有内容都寫在Html标簽中,可以從網頁源代碼中直接查找到資料。
2.動态網頁
資料是通過JavaScript動态加載顯示到<body>中,直接查找源代碼不能找到資料。
3.登陸網頁
3.1 無驗證碼登陸
需要通過登陸後才可以檢視擷取網頁資料。(包括靜态、動态)
3.2 有驗證碼登陸(暫時還未研究)
驗證碼目前形勢也較多:
傳統驗證圖檔輸入
拖動驗證
點選圖中某些字
短信驗證
計算圖檔算術結果
....
二、爬蟲擷取資料步驟:
1. 通過http協定,擷取(下載下傳)網頁(起始頁)
2. 解析網頁:
2.1 解析網頁連結,加入爬隊列(去重處理,标記已爬取連結)
2.2 取得需要的資料
3. 儲存資料
三、爬取技術選取:HtmlUnit+Jsoup
采用htmlunit擷取網頁,并解析執行js,渲染頁面
采用jsoup解析網頁,擷取資料和連結
Htmlunit常用參數設定:
參數設定如下:
// 1建立WebClient
WebClient webClient=new WebClient(BrowserVersion.CHROME);
// 2 啟動JS
webClient.getOptions().setJavaScriptEnabled(true);
// 3 禁用Css,可避免自動二次請求CSS進行渲染
webClient.getOptions().setCssEnabled(false);
// 4 啟動客戶端重定向
webClient.getOptions().setRedirectEnabled(true);
// 5 js運作錯誤時,是否拋出異常
webClient.getOptions().setThrowExceptionOnScriptError(false);
// 6 設定逾時
webClient.getOptions().setTimeout(50000);
//擷取網頁
HtmlPage htmlPage = webClient.getPage(url);
// 等待JS驅動dom完成獲得還原後的網頁
webClient.waitForBackgroundJavaScript(10000);
// 網頁內容
Document doc=Jsoup.parse(htmlPage.asXml());
//使用jsoup解析頁面
.....
//關閉windows,釋放資源
webClient.closeAllWindows();
更多參考:http://htmlunit.sourceforge.net/gettingStarted.html
http://htmlunit.sourceforge.net/apidocs/
http://www.cnblogs.com/luotinghao/p/3800054.html
http://blog.csdn.net/ldw220817/article/details/8790119
四、Jsoup常用函數
Document doc=Jsoup.parse(String html);//将html源碼文本,解析并生成DOM樹
doc.select(String cssQuery);
doc.getElementById();
更多參考:http://www.cnblogs.com/xiaoMzjm/p/3899366.html
http://tool.oschina.net/apidocs/apidoc?api=jsoup-1.6.3
https://www.ibm.com/developerworks/cn/java/j-lo-jsouphtml/
五、總結
1.js的執行還未研究透徹
2.驗證碼還未開始研究
3.準備研究webkit
4.終極目标:封裝自己的爬蟲