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);
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM