網絡爬蟲入門(一)
寒假開始學習一些簡答的爬蟲并且做一些有意義的事情。
首先,百度一下爬蟲的意思:
網絡爬蟲:網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
我所理解的最簡單的爬蟲的意思就是將網頁上的內容抓取下來,然后在進行其他的一些行為。那么首先就要獲得一個網頁。
那么如何獲得一個網頁呢,首先要知道這個頁面的URL,就以百度為一個例子,百度的URL為:http://www.baidu.com/。Java中的URL類可以獲取一個URL。
那么這個URL獲取到了之后會被當成一個文件處理,也就是說URL當做一個文件輸入流讀取進來。
讀取完這個URL所對應的資源之后,我們可以讓他顯示出來:
先看看代碼:
1 public class TestSp1 { 2 public static void main(String[] args){ 3 try { 4 URL pageURL=new URL("http://www.baidu.com"); 5 InputStream input=pageURL.openStream(); 6 Scanner scanner = new Scanner(input, "utf-8"); 7 String text = scanner.useDelimiter("http://a").next(); 8 System.out.println(text); 9 } catch (MalformedURLException e) { 10 e.printStackTrace(); 11 } catch (IOException e) { 12 e.printStackTrace(); 13 } 14 } 15 }
首先訪問百度頁面,然后讀取流的內容,之后輸出,得到的結果如下:
那么這一串代碼是什么呢?我們可以訪問一下百度的頁面看一下百度網頁的源代碼。下面是我用谷歌瀏覽器訪問百度之后查看的源代碼:
經過對比我們可以發現是一樣的,也就是說我們讀取到的網頁實際上就是一個html文件,將服務器上的html文件讀取出來,然后輸出到控制臺上就好了。
這就是爬蟲的第一步,不過據說,實際上網絡換進會比較復雜,所以使用java.net中的API工作量會非常大的,所以實際開發中會有現成的開源包,Apache下含有Http客戶端的jar包,叫做HttpClient.jar
那么使用HttpClient這個工具怎么獲得百度的網頁呢?
首先需要兩個包
第二個logging這個包如果沒有程序是無法正常工作的,所以第二個必須有。之后代碼就改成了這個:
1 public class TestSp2 { 2 public static void main(String[] args){ 3 HttpClient httpClient=new HttpClient(); 4 GetMethod get=new GetMethod("http://www.baidu.com/"); 5 try { 6 int num=httpClient.executeMethod(get); 7 System.out.println(num); 8 } catch (IOException e) { 9 e.printStackTrace(); 10 } 11 12 try { 13 System.out.println(get.getResponseBodyAsString()); 14 } catch (IOException e) { 15 e.printStackTrace(); 16 } 17 18 } 19 }
num是用來獲得Http狀態碼這個就不過多的說了,如果正常訪問的話會輸出200。接下來輸出的是頁面的內容:
和預期一樣,狀態碼輸出為200,表示訪問正常,然后就是HTML頁面的內容。
=========================================