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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎免费入口 | 日本人成在线视频免费播放 | 色综合久久日韩国产 | 欧美精品国产第一区二区 | 国产黄频在线观看高清免费 | 欧美操屁股 | 免费看美女被靠到爽 | 国产精品特黄毛片 | 国产a一级毛片爽爽影院 | 暖暖影院日本版 | 九九精品国产兔费观看久久 | 午夜福利理论片在线播放 | 法国贵妇一级伦理hd | 免费看又黄又爽又猛的视频软件- | 国产精品久久久天天影视香蕉 | 亚洲 欧美 国产 在线 日韩 | 久久精品无码人妻无码AV蜜臀 | 久久re6热在线视频 久久AV喷吹AV高潮欧美 | 亚洲欧美天堂 | 国模孕妇季玥全部人体写真 | 久久最新地址获取 | 爱操综合网 | 俄罗斯三级完整版在线观看 | 国产一卡二卡四卡免费 | 狠狠色 | 色婷婷久久综合中文久久一本` | 亚洲四虎永久在线播放 | 无限资源在线观看高清 | 美艳教师刘艳第三部166 | 亚洲图片二区 | 男生和老师一起差差差 | 国产一级一级片 | 国内视频一区二区 | 欧美猛男同志video在线 | 日本漫画工囗全彩内番e绅 日本伦理动漫在线观看 | 亚洲第一色视频 | 美女脱了内裤打开腿让人桶网站o | 亚洲欧美韩国日产综合在线 | 久久这里有精品 | 日本xxxx69hd | 美女毛片老太婆bbb80岁 |