激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费一级毛片在线播放不收费 | 亚洲性在线视频 | 久久老司机 | 久色porn| 久久久久久久久久一本门道91 | 免费色片 | 法国性xxx精品hd | 成人免费视频视频在线观看 免费 | 一区二区三区四区视频在线观看 | 精品国产一区在线 | 国产精品99久久99久久久二 | 自拍偷拍999 | 亚洲精品在线观看网站 | 精品一二三区视频 | 久久网站热最新地址 | 欧美老外a级毛片 | 日产精品一区二区三区在线观看 | 免费激情视频网站 | 中文字幕涩涩久久乱小说 | 欧美成人一区二区视频 | 日本在线不卡一区二区 | 欧美一级高清免费 | 黄色伊人网站 | h视频在线免费观看 | 国产欧美日韩视频在线观看 | 日韩精品一区二区在线播放 | 一级大片久久 | 亚洲欧美日韩精品久久 | 美女一级视频 | 欧美爱爱视频网站 | 毛片电影网址 | 成年片在线观看 | 欧美在线观看禁18 | 精品亚洲午夜久久久久91 | 亚洲第一综合 | 中文字幕在线免费看 | 2019亚洲日韩新视频 | 免费久久精品 | 欧美一级免费看 | 91久久综合 | 男女隐私免费视频 |