1.網絡爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。
2.那么程序獲取網頁的原理到底是怎么回事呢?看下面的圖:客服端首先向服務器端發出Http請求,之后服務器端返回相應的結果或者請求超時客戶端自己報錯。
服務器端發出的Http請求,實際上說是對服務器的文件的請求。下面的表格是一些常見的HTTP請求對應的文件。(因為第一列給出的都是主機的網址信息,主機一般都通過配置文件將該請求轉換為網站主頁地址index.php或index.jsp或者index.html等)
| HTTP請求 | HTTP對應的文件 |
| http://www.baidu.com | http://www.baidu.com/index.php |
| http://www.sina.com.cn | http://www.sina.com.cn/index.html |
| http://www.cnblogs.com | http://www.cnblogs.com/index.html |
| http://ac.jobdu.com | http://ac.jobdu.com/index.php |
3.java實現網頁源碼獲取的步驟:
(1)新建URL對象,表示要訪問的網址。如:url=new URL("http://www.sina.com.cn");
(2)建立HTTP連接,返回連接對象urlConnection對象。如:urlConnection = (HttpURLConnection)url.openConnection();
(3)獲取相應HTTP 狀態碼。如responsecode=urlConnection.getResponseCode();
(4)如果HTTP 狀態碼為200,表示成功。從urlConnection對象獲取輸入流對象來獲取請求的網頁源代碼。
4.java獲取網頁源碼代碼:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class WebPageSource { public static void main(String args[]){ URL url; int responsecode; HttpURLConnection urlConnection; BufferedReader reader; String line; try{ //生成一個URL對象,要獲取源代碼的網頁地址為:http://www.sina.com.cn url=new URL("http://www.sina.com.cn"); //打開URL urlConnection = (HttpURLConnection)url.openConnection(); //獲取服務器響應代碼 responsecode=urlConnection.getResponseCode(); if(responsecode==200){ //得到輸入流,即獲得了網頁的內容 reader=new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),"GBK")); while((line=reader.readLine())!=null){ System.out.println(line); } } else{ System.out.println("獲取不到網頁的源碼,服務器響應代碼為:"+responsecode); } } catch(Exception e){ System.out.println("獲取不到網頁的源碼,出現異常:"+e); } } }
