머리말:
인터넷의 첫 번째 물결은 이제 사라졌습니다. 수천 개의 데이터를 기반으로하는 사물 인터넷의 시대에 데이터는 기업의 중요한 전략적 자원 중 하나가되었습니다. 이 기사는 데이터 크롤링 기술을 기반으로 Java 관련 크롤링 도구를 소개하고 관심있는 친구가 테스트 할 수있는 데모 소스 코드를 첨부합니다!
1) JDK는 HTTP 연결과 함께 페이지 또는 JSON을 얻습니다.
2) JDK는 자체 URL 연결이 제공되어 페이지 또는 JSON을 얻습니다.
3) httpclient Get Tool, Get Page 또는 JSON
4) Commons-IO Tool, Get Page 또는 JSON
5) JSOUP 도구 (일반적으로 HTML 필드 구문 분석에 사용), 페이지 획득, JSON없이 형식을 반환합니다.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
완전한 코드 :
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 java.net.url; import org.apache.commons.httpclient.httplient org.apache.commons.httpclient.httpmethod; import org.apache.commons.httpclient.methods.getMethod.getMethod; import org.apache.commons.io.ioutils; import org.jsoup.jsoup;/** * http tool compralison */junhong */junhong */2016 27, 2016 httpfetchUtil { / ** * 액세스 상태 코드 가져옵니다 * @param request * @return * @throws 예외 * / public static int getResponsecode (문자열 요청) 예외 {url url = new url (request); httpurlconnection conn = (httpurlConnection) url.openConnection (); return conn.getResponseCode (); } / ** * 1) JDK는 페이지 또는 json * @param request * @param charset * @rerrows Exception * / public static string jdkfetch (문자열 요청, 문자열 charset)를 가져 오기 위해 http 연결과 함께 제공됩니다. {url url = new url (request); httpurlconnection conn = (httpurlConnection) url.openConnection (); // 브라우저 매개 변수를 조롱하는 Conn.setRequestProperty ( "사용자 에이전트", "Mozilla/5.0 (Wind if (conn.getResponseCode () == httpurlConnection.http_ok) {inputStream input = conn.getInputStream (); StringBuffer sb = new StringBuffer (); bufferedReader reader = new bufferedReader (new inputStreamReader (input, charset)); 문자열 s; while ((s = reader.readline ())! = null) {sb.append (s + "/n"); } input.close (); conn.disconnect (); 반환 sb.toString (); } 반품 ""; } / ** * 2) JDK는 자체 URL 연결을 제공하여 페이지 또는 json * @param request * @param charset * @rerrows Exception * / public static string urlfetch (문자열 요청, 문자열 charset) 예외 {url url = new url (request); return ioutils.tostring (url.openstream ()); } / ** * 3) httpclient get tool, page 또는 json * @param url * @param charset * @ethrows 예외 * / public static string httpclientfetch (문자열 URL, String Charset) 예외 {// httpclient httpclient = new httpclient (); httpclient.getparams (). setContentCharset (charset); httpmethod 메서드 = 새로운 getMethod (url); httpclient.executemethod (메소드); return method.getResponseBodyAsString (); } / ** * 4) Commons-IO 도구, 페이지 또는 JSON * @param url * @param charset * @Throws Exception * / public static string commonsiofetch (String URL, String Charset) Exception {return ioutils.tostring (new url (url), charset); } / ** * 5) JSOUP 도구 (일반적으로 HTML 필드 구문 분석에 사용), 페이지 획득, 비 JSON 반환 형식 * @param url * @Throws Exception * / public static String (String URL) 예외 {return Jsoup.parse (new url (url), 2 * 1000) .html (); }}테스트 코드 :
package com.yeezhao.common.http; import org.junit.after; import org.junit.before; import org.junit.test;/*** 테스트 클래스* 3 테스트 링크 :* 1) EncyClopedia 웹 페이지* 2) 인터페이스 데이터를 얻기위한 브라우저 시뮬레이션* 3) 일반 인터페이스 데이터***** 2016 년 27, 2016 년 27 일. httpfetchutiltest {문자열 seeds [] = { "http://baike.baidu.com/view/1.htm" remyapi.yeezhao.com/api/Query?wd=%E5%91%A8%E6%98%9F%E9%A9%B0%E7%9A%84%E7%94%B5%E5%BD%B1 "}; 최종 정적 문자열 default_charset = "utf-8"; @public void setup ()가 예외 {} @after public void intewdown () rows exception {system.out.println ( "--- down ---"); } @test public void testgetResponsecode ()는 예외를 {for (string seed : seeds) {int responsecode = httpfetchutil.getResponsecode (seed); System.out.println ( "ret ="+responsecode); }} @test public void testjdkfetch ()는 예외 {for (string seed : seeds) {문자열 ret = httpfetchutil.jdkfetch (seed, default_charset); System.out.println ( "ret ="+ret); }} @test public void testurlfetch ()는 예외를 {for (string seed : seeds) {String ret = httpfetchutil.urlfetch (seed, default_charset); System.out.println ( "ret ="+ret); }} @test public void testhttpclientfetch ()는 예외를 {for (string seed : seeds) {String ret = httpfetchutil.httpclientfetch (seed, default_charset); System.out.println ( "ret ="+ret); }} @test public void testcommonsiofetch ()는 예외를 {for (string seed : seeds) {String ret = httpfetchutil.commonsiofetch (seed, default_charset); System.out.println ( "ret ="+ret); }} @test public void testjsoupfetch ()는 예외 {for (string seed : seeds) {String ret = httpfetchutil.jsoupfetch (seed); System.out.println ( "ret ="+ret); }}}첨부 파일 : 관련 JAR 종속성
... <pectionency> <groupId> org.jsoup </groupid> <artifactid> jsoup </artifactid> <bersion> 1.7.3 </version> </fectionency> <pectionement> <groupid> commons-httpclient </groupid> <trifactid> comm ons-httpclient </artifactid> <bersion> 3.1 </version> </dependency> <prectionement> <groupid> commons-io </groupid> <artifactid> commons-io </artifactid> <버전> </decendency> ...
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.