本文執行個體講述了java簡單網頁抓取的實現方法。分享給大家供大家參考。具體分析如下:
背景介紹
一 tcp簡介
1 tcp 實現網路中點對點的傳輸
2 傳輸是通過ports和sockets
ports提供了不同類型的傳輸(例如 http的port是80)
1)sockets可以綁定在特定連接埠上,並且提供傳輸功能
2)一個port可以串連多個socket
二 URL簡介
URL 是對可以從互連網上得到的資源的位置和存取方法的一種簡潔的表示,是互連網上標準資源的地址。
互連網上的每個檔案都有一個唯一的URL,它包含的資訊指出檔案的位置以及瀏覽器應該怎麼處理它。
綜上,我們要抓取網頁的內容實質上就是通過url來抓取網頁內容。
Java提供了兩種方法:
一種是直接從URL讀取網頁
一種是通過 URLConnection來讀取網頁
其中的URLConnection是以http為核心的類,提供了很多關於串連http的函數
本文將給出基於URLConnection的執行個體代碼。
在此之前我們先來看下關於url的異常。不瞭解java異常機制的請參看上一篇博文。
構造URL的異常MalformedURLException產生條件:url的字串為空白或者是不能辨認的協議
建立 URLConnection的異常 IOException產生條件: openConnection失敗,注意openConnection時 代碼還未串連遠程,只是為串連遠程做準備
綜上所述,最終代碼如下:
複製代碼 代碼如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class SimpleNetSpider {
public static void main(String[] args) {
try{
URL u = new URL("http://docs.oracle.com/javase/tutorial/networking/urls/");
URLConnection connection = u.openConnection();
HttpURLConnection htCon = (HttpURLConnection) connection;
int code = htCon.getResponseCode();
if (code == HttpURLConnection.HTTP_OK)
{
System.out.println("find the website");
BufferedReader in=new BufferedReader(new InputStreamReader(htCon.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
else
{
System.out.println("Can not access the website");
}
}
catch(MalformedURLException e )
{
System.out.println("Wrong URL");
}
catch(IOException e)
{
System.out.println("Can not connect");
}
}
}
希望本文所述對大家的Java程式設計有所協助。