本文實例講述了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程式設計有幫助。