網絡爬蟲基礎知識(Java實現)

1.1 爬蟲概論

網絡爬蟲(Web crawler)也叫網絡蜘蛛Web spide自動檢索工具(automatic indexer),是一種自動化瀏覽網絡程序,或者說是一種網絡機器人php

爬蟲被普遍用於互聯網搜索引擎或其餘相似網站,以獲取或更新這些網站的內容和檢索方式。它們能夠自動採集全部其可以訪問到的頁面內容,以供搜索引擎作進一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們須要的信息。html

通俗的講,就是把你手動打開窗口,輸入數據等等操做用程序代替。用程序替你獲取你想要的信息,這就是網絡爬蟲java

1.2 爬蟲應用

1.2.1 搜索引擎

爬蟲程序能夠爲搜索引擎系統爬取網絡資源用戶能夠經過搜索引擎搜索網絡上一切所須要的資源。搜索引擎是一套很是龐大且精密的算法系統,搜索的準確性,高效性都對搜索系統有很高的要求。node

1.2.2 數據挖掘

爬蟲除了用來作搜索外,還能夠作很是多的工做,能夠說爬蟲如今在互聯網項目中應用的很是普遍。算法

互聯網項目經過爬取相關數據主要進行數據分析,獲取價值數據apache

 

 HttpClient抓取網頁流程

 

使用HttpClient發送請求、接收響應很簡單,通常須要以下幾步服務器

 

1. 建立HttpClient對象。網絡

 

2. 建立請求方法的實例,並指定請求URL。若是須要發送GET請求,建立HttpGet對象;若是須要發送POST請求,建立HttpPost對象。ide

 

3. 若是須要發送請求參數,可調用HttpGetHttpPost共同的setParams(HetpParams params)方法來添加請求參數;對於HttpPost對象而言,也可調用setEntity(HttpEntity entity)方法來設置請求參數。工具

 

4. 調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse

 

5. 調用HttpResponsegetAllHeaders()getHeaders(String name)等方法可獲取服務器的響應頭;調用HttpResponsegetEntity()方法可獲取HttpEntity對象,該對象包裝了服務器的響應內容。程序可經過該對象獲取服務器的響應內容。

 

6. 釋放鏈接。不管執行方法是否成功,都必須釋放鏈接

須要用的的jar包

 

簡單案例源代碼

 

 1 import java.io.IOException;
 2 
 3 import org.apache.http.HttpHost;
 4 import org.apache.http.HttpResponse;
 5 import org.apache.http.client.ClientProtocolException;
 6 import org.apache.http.client.HttpClient;
 7 import org.apache.http.client.methods.HttpGet;
 8 import org.apache.http.conn.params.ConnRouteParams;
 9 import org.apache.http.impl.client.DefaultHttpClient;
10 import org.apache.http.params.CoreConnectionPNames;
11 import org.apache.http.util.EntityUtils;
12 import org.jsoup.Jsoup;
13 import org.jsoup.nodes.Document;
14 import org.jsoup.select.Elements;
15 
16 public class MyHttpClient {
17     /***
18      * 需求:使用httpClient爬取傳智播客官方網站數據
19      * @param args
20      * @throws Exception 
21      * @throws ClientProtocolException 
22      */
23     public static void main(String[] args) throws Exception {
24         
25         //建立HttpClient對象
26         HttpClient hClient = new DefaultHttpClient();
27         
28         
29         //設置響應時間,設置傳智源碼時間,設置代理服務器 防止被對方判斷出爲爬蟲程序
30         /*hClient.getParams().
31         setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000)
32         .setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000)
33         .setParameter(ConnRouteParams.DEFAULT_PROXY, new HttpHost("118.190.95.43", 9001));*/
34         
35         //爬蟲URL大部分都是get請求,建立get請求對象
36         HttpGet hget = new HttpGet("http://www.stdu.edu.cn/index.php/2012-04-11-16-29-00/administration.html");        
37         //向石家莊鐵道大學網站發送請求,獲取網頁源碼
38         HttpResponse response = hClient.execute(hget);
39         //EntityUtils工具類把網頁實體轉換成字符串
40         String content = EntityUtils.toString(response.getEntity(), "utf-8");
41         //System.out.println(content);//整個頁面的源代碼
42         Document doc = Jsoup.parse(content);
43         //使用元素選擇器選擇網頁內容
44         /*Elements elements = doc.select("ul");
45         System.out.println(elements.text());*/
46         //Elements elements1 = doc.select("title");
47     
48         Elements elements1 = doc.select("a");
49         String shuchu0 = elements1.text();
50         String shuchu1 = elements1.get(1).text();
51         System.out.println(shuchu0);
52         System.out.println(shuchu1);
53        // Elements elements4 =  doc.select("a");
54         Elements elements4 =  doc.select("a[href]");
55         
56         System.out.println(elements4.html());
57         //附 標籤選擇器使用參考連接
58         
59     }
60 
61 }

 運行結果截圖:

 

 

 

相關文章
相關標籤/搜索