자바 url 을 이용 하여 웹 페이지 내용 캡 처 실현

4124 단어 자바붙잡다
할 일이 없어 서 git 를 원 격 서버 에 배치 하 는 것 을 배 웠 습 니 다.할 일이 없어 서 웹 페이지 정 보 를 캡 처 하 는 작은 도 구 를 만 들 었 습 니 다.그 안의 일부 수 치 를 매개 변수 로 설정 하면 성능 을 확장 할 수 있 습 니 다!이것 이 좋 은 시작 이 었 으 면 좋 겠 습 니 다.저 는 문자열 의 읽 기 에 더욱 익숙 해 졌 습 니 다.주의해 야 할 것 은 JAVA 1.8 에서 String 문자열 을 사용 할 때 자동 으로 연결 할 문자열 을 StringBulider 로 처리 하여 String 의 성능 을 크게 최적화 시 켰 습 니 다.잡담 을 많이 하지 않 습 니 다.show my XXX code~
실행 효과:

먼저 바 이 두 백 과 를 열 고'배우'와 같은 단 어 를 검색 한 다음 에 F12 를 누 르 면 소스 코드 를 볼 수 있 습 니 다.

그리고 원 하 는 탭 을 잡 아서 링크 드 해시 맵 에 넣 으 면 돼 요.간단 하 죠?코드 봐 봐.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
/**
 * Created by chunmiao on 17-3-10.
 */
public class ReadBaiduSearch {
 //      
 private LinkedHashMap<String,String> mapOfBaike;
 //      
 public LinkedHashMap<String,String> getInfomationOfBaike(String infomationWords) throws IOException {
  mapOfBaike = getResult(infomationWords);
  return mapOfBaike;
 }
 //          
 private static LinkedHashMap<String, String> getResult(String keywords) throws IOException {
  //   url
  String keyUrl = "http://baike.baidu.com/search?word=" + keywords;
  //       
  String startNode = "<dl class=\"search-list\">";
  //        
  String keyOfHref = "href=\"";
  //        
  String keyOfTitle = "target=\"_blank\">";
  String endNode = "</dl>";
  boolean isNode = false;
  String title;
  String href;
  String rLine;
  LinkedHashMap<String,String> keyMap = new LinkedHashMap<String,String>();
  //      
  URL url = new URL(keyUrl);
  HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
  InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream(),"utf-8");
  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  //      
  while ((rLine = bufferedReader.readLine()) != null){
   //          
   if(rLine.contains(startNode)){
    isNode = true;
   }
   //       ,       
   if (isNode){
    //         ,     ,      
    if (rLine.contains(endNode)) {
     //     
     bufferedReader.close();
     inputStreamReader.close();
     break;
    }
    //        
    if (((title = getName(rLine,keyOfTitle)) != "") && ((href = getHref(rLine,keyOfHref)) != "")){
     keyMap.put(title,href);
    }
   }
  }
  return keyMap;
 }
 //       url
 private static String getHref(String rLine,String keyOfHref){
  String baikeUrl = "http://baike.baidu.com";
  String result = "";
  if(rLine.contains(keyOfHref)){
   //  url
   for (int j = rLine.indexOf(keyOfHref) + keyOfHref.length();j < rLine.length()&&(rLine.charAt(j) != '\"');j ++){
    result += rLine.charAt(j);
   }
   //   url     baikeUrl,            
   if(!result.contains(baikeUrl)){
    result = baikeUrl + result;
   }
  }
  return result;
 }
 //         
 private static String getName(String rLine,String keyOfTitle){
  String result = "";
  //      
  if(rLine.contains(keyOfTitle)){
   result = rLine.substring(rLine.indexOf(keyOfTitle) + keyOfTitle.length(),rLine.length());
   //              
   result = result.replaceAll("<em>|</em>|</a>|<a>","");
  }
  return result;
 }
}
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

좋은 웹페이지 즐겨찾기