網絡爬蟲(Web crawler)也叫網絡蜘蛛(Web spide)自動檢索工具(automatic indexer),是一種」自動化瀏覽網絡「的程序,或者說是一種網絡機器人。php
爬蟲被普遍用於互聯網搜索引擎或其餘相似網站,以獲取或更新這些網站的內容和檢索方式。它們能夠自動採集全部其可以訪問到的頁面內容,以供搜索引擎作進一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們須要的信息。html
通俗的講,就是把你手動打開窗口,輸入數據等等操做用程序代替。用程序替你獲取你想要的信息,這就是網絡爬蟲java
爬蟲程序能夠爲搜索引擎系統爬取網絡資源,用戶能夠經過搜索引擎搜索網絡上一切所須要的資源。搜索引擎是一套很是龐大且精密的算法系統,搜索的準確性,高效性等都對搜索系統有很高的要求。node
爬蟲除了用來作搜索外,還能夠作很是多的工做,能夠說爬蟲如今在互聯網項目中應用的很是普遍。算法
互聯網項目經過爬取相關數據主要進行數據分析,獲取價值數據。apache
使用HttpClient發送請求、接收響應很簡單,通常須要以下幾步:服務器
1. 建立HttpClient對象。網絡
2. 建立請求方法的實例,並指定請求URL。若是須要發送GET請求,建立HttpGet對象;若是須要發送POST請求,建立HttpPost對象。ide
3. 若是須要發送請求參數,可調用HttpGet、HttpPost共同的setParams(HetpParams params)方法來添加請求參數;對於HttpPost對象而言,也可調用setEntity(HttpEntity entity)方法來設置請求參數。工具
4. 調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse。
5. 調用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可獲取服務器的響應頭;調用HttpResponse的getEntity()方法可獲取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 }
運行結果截圖: