大家快來看Java 網絡爬蟲獲取網頁源代碼原理及實現
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);
}
}
}
(責任編輯:源碼海洋)本文地址:http://m.bmm520.net/info/java/2019/0125/17174.html