網絡爬蟲入門(一)

jopen 8年前發布 | 14K 次閱讀 網絡爬蟲 Java

寒假開始學習一些簡答的爬蟲并且做一些有意義的事情。

首先,百度一下爬蟲的意思:

網絡爬蟲:網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在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頁面的內容。

=========================================

來自: http://www.cnblogs.com/Summer7C/p/5136619.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!