Java 網絡爬蟲獲取網頁源代碼原理及實現


Java 網絡爬蟲獲取網頁源代碼原理及實現

  1.網絡爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。

  2.那么程序獲取網頁的原理到底是怎么回事呢?看下面的圖:客服端首先向服務器端發出Http請求,之后服務器端返回相應的結果或者請求超時客戶端自己報錯。

  服務器端發出的Http請求,實際上說是對服務器的文件的請求。下面的表格是一些常見的HTTP請求對應的文件。(因為第一列給出的都是主機的網址信息,主機一般都通過配置文件將該請求轉換為網站主頁地址index.phpindex.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