一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Java實現多種方式的http數據抓取

詳解Java實現多種方式的http數據抓取

2020-07-19 12:30Sea_Sky Java教程

本篇文章主要介紹了Java實現多種方式的http數據抓取,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。

前言:

時下互聯網第一波的浪潮已消逝,隨著而來的基于萬千數據的物聯網時代,因而數據成為企業的重要戰略資源之一。基于數據抓取技術,本文介紹了java相關抓取工具,并附上demo源碼供感興趣的朋友測試!

1)JDK自帶HTTP連接,獲取頁面或Json

詳解Java實現多種方式的http數據抓取

2) JDK自帶URL連接,獲取頁面或Json

詳解Java實現多種方式的http數據抓取

3)HttpClient Get工具,獲取頁面或Json

詳解Java實現多種方式的http數據抓取

 4)commons-io工具,獲取頁面或Json

詳解Java實現多種方式的http數據抓取

5) Jsoup工具(通常用于html字段解析),獲取頁面,非Json返回格式】

詳解Java實現多種方式的http數據抓取

--------------------------------------------------------------------------------

完整代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package com.yeezhao.common.http;
 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.io.IOUtils;
import org.jsoup.Jsoup;
 
/**
 * http工具對比
 *
 * @author Administrator -> junhong
 *
 *     2016年12月27日
 */
public class HttpFetchUtil {
  
  /**
   * 獲取訪問的狀態碼
   * @param request
   * @return
   * @throws Exception
   */
  public static int getResponseCode(String request) throws Exception {
    URL url = new URL(request);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    return conn.getResponseCode();
 
  }
  /**
   * 1)JDK自帶HTTP連接,獲取頁面或Json
   * @param request
   * @param charset
   * @return
   * @throws Exception
   */
  public static String JDKFetch(String request, String charset) throws Exception {
    URL url = new URL(request);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    //模擬瀏覽器參數
    conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36"
        + " (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36");
    if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
      InputStream input = conn.getInputStream();
      StringBuffer sb = new StringBuffer();
      BufferedReader reader = new BufferedReader(new InputStreamReader(input, charset));
      String s;
      while ((s = reader.readLine()) != null) {
        sb.append(s + "\n");
      }
      input.close();
      conn.disconnect();
      return sb.toString();
    }
    return "";
  }
  /**
   * 2) JDK自帶URL連接,獲取頁面或Json
   * @param request
   * @param charset
   * @return
   * @throws Exception
   */
  public static String URLFetch(String request, String charset) throws Exception {
    URL url = new URL(request);
    return IOUtils.toString(url.openStream());
  }
 
  /**
   * 3)HttpClient Get工具,獲取頁面或Json
   * @param url
   * @param charset
   * @return
   * @throws Exception
   */
  public static String httpClientFetch(String url, String charset) throws Exception {
    // GET
    HttpClient httpClient = new HttpClient();
    httpClient.getParams().setContentCharset(charset);
    HttpMethod method = new GetMethod(url);
    httpClient.executeMethod(method);
    return method.getResponseBodyAsString();
  }
  /**
   * 4)commons-io工具,獲取頁面或Json
   * @param url
   * @param charset
   * @return
   * @throws Exception
   */
  public static String commonsIOFetch(String url, String charset) throws Exception {
    return IOUtils.toString(new URL(url), charset);
  }
  
  /**
   * 5) Jsoup工具(通常用于html字段解析),獲取頁面,非Json返回格式
   * @param url
   * @return
   * @throws Exception
   */
  public static String jsoupFetch(String url) throws Exception {
    return Jsoup.parse(new URL(url), 2 * 1000).html();
  }
 
}

測試代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.yeezhao.common.http;
 
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
 * 測試類
 * 3個測試鏈接:
 * 1)百科網頁
 * 2)瀏覽器模擬獲取接口數據
 * 3)獲取普通接口數據
 * @author Administrator -> junhong
 *
 * 2016年12月27日
 */
public class HttpFetchUtilTest {
  String seeds[] = {"http://baike.baidu.com/view/1.htm","http://m.ximalaya.com/tracks/26096131.json","http://remyapi.yeezhao.com/api/query?wd=%E5%91%A8%E6%98%9F%E9%A9%B0%E7%9A%84%E7%94%B5%E5%BD%B1"};
  final static String DEFAULT_CHARSET = "UTF-8";
  @Before
  public void setUp() throws Exception {
  }
 
  @After
  public void tearDown() throws Exception {
    System.out.println("--- down ---");
  }
 
  @Test
  public void testGetResponseCode() throws Exception{
    for(String seed:seeds){
      int responseCode = HttpFetchUtil.getResponseCode(seed);
      System.out.println("ret="+responseCode);
    }
  }
 
  @Test
  public void testJDKFetch() throws Exception{
    for(String seed:seeds){
      String ret = HttpFetchUtil.JDKFetch(seed, DEFAULT_CHARSET);
      System.out.println("ret="+ret);
    }
  }
 
  @Test
  public void testURLFetch() throws Exception{
    for(String seed:seeds){
      String ret = HttpFetchUtil.URLFetch(seed, DEFAULT_CHARSET);
      System.out.println("ret="+ret);
    }
  }
 
  @Test
  public void testHttpClientFetch()throws Exception {
    for(String seed:seeds){
      String ret = HttpFetchUtil.httpClientFetch(seed, DEFAULT_CHARSET);
      System.out.println("ret="+ret);
    }
  }
 
  @Test
  public void testCommonsIOFetch()throws Exception {
    for(String seed:seeds){
      String ret = HttpFetchUtil.commonsIOFetch(seed, DEFAULT_CHARSET);
      System.out.println("ret="+ret);
    }
  }
 
  @Test
  public void testJsoupFetch() throws Exception{
    for(String seed:seeds){
      String ret = HttpFetchUtil.jsoupFetch(seed);
      System.out.println("ret="+ret);
    }
  }
 
}

附:相關jar依賴

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
...
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.3</version>
</dependency>
 
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
 
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
...

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/SeaSky0606/p/6224964.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 456亚洲老头视频 | 久久精品国产亚洲AV麻豆欧美玲 | 日本草草视频在线观看 | 亚洲第一在线播放 | 精品国产影院 | 草草国产成人免费视频 | 亚洲精品 欧美 | 亚洲成综合人影院在院播放 | acg火影忍者熟密姬纲手h | 3d动漫h在线观看网站蜜芽 | 国产不卡视频一区二区在线观看 | 日本成熟老妇xxxx | 性做久久久久久 | 天天综合天天影视色香欲俱全 | 国产免费成人在线视频 | 欧美成年黄网站色高清视频 | 亚洲欧美7777 | 国产精品va在线观看不 | 久久99精品涩AV毛片观看 | 欧美性色欧美a在线播放 | 亚洲精品第二页 | 亚洲天堂激情 | 亚洲国产精品久久精品怡红院 | 亚洲天天综合网 | 四虎影院新网址 | 99国产情在线视频 | 亚洲欧美日韩国产精品影院 | 精品国产免费第一区二区 | 国产香蕉视频在线观看 | 特黄特黄一级片 | 免费在线中文字幕 | 日本视频在线免费播放 | xx顶级欧美熟妞xxhd | 久久久精品日本一区二区三区 | 国产欧美又粗又猛又爽老 | 午夜福利视频极品国产83 | 欧美vpswindowssex 欧美va在线高清 | 午夜影院免费入口 | 91香蕉国产视频 | 校草让我脱了内裤给全班看 | 青青草国产免费久久久91 |