亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java利用url實(shí)現(xiàn)網(wǎng)頁內(nèi)容的抓取

 更新時間:2017年03月13日 09:42:31   作者:zangcunmiao  
本文主要介紹了java利用url實(shí)現(xiàn)網(wǎng)頁內(nèi)容抓取的示例。具有很好的參考價(jià)值。下面跟著小編一起來看下吧

閑來無事,剛學(xué)會把git部署到遠(yuǎn)程服務(wù)器,沒事做,所以簡單做了一個抓取網(wǎng)頁信息的小工具,里面的一些數(shù)值如果設(shè)成參數(shù)的話可能擴(kuò)展性能會更好!希望這是一個好的開始把,也讓我對字符串的讀取掌握的更加熟練了,值得注意的是JAVA1.8 里面在使用String拼接字符串的時候,會自動把你要拼接的字符串用StringBulider來處理,大大優(yōu)化了String 的性能,閑話不多說,show my XXX code~

運(yùn)行效果:

首先打開百度百科,搜索詞條,比如“演員”,再按F12查看源碼

然后抓取你想要的標(biāo)簽,注入LinkedHashMap里面就ok了,很簡單是吧!看看代碼羅

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 {
 //儲存返回結(jié)果
 private LinkedHashMap<String,String> mapOfBaike;
 //獲取搜索信息
 public LinkedHashMap<String,String> getInfomationOfBaike(String infomationWords) throws IOException {
  mapOfBaike = getResult(infomationWords);
  return mapOfBaike;
 }
 //通過網(wǎng)絡(luò)鏈接獲取信息
 private static LinkedHashMap<String, String> getResult(String keywords) throws IOException {
  //搜索的url
  String keyUrl = "http://baike.baidu.com/search?word=" + keywords;
  //搜索詞條的節(jié)點(diǎn)
  String startNode = "<dl class=\"search-list\">";
  //詞條的鏈接關(guān)鍵字
  String keyOfHref = "href=\"";
  //詞條的標(biāo)題關(guān)鍵字
  String keyOfTitle = "target=\"_blank\">";
  String endNode = "</dl>";
  boolean isNode = false;
  String title;
  String href;
  String rLine;
  LinkedHashMap<String,String> keyMap = new LinkedHashMap<String,String>();
  //開始網(wǎng)絡(luò)請求
  URL url = new URL(keyUrl);
  HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
  InputStreamReader inputStreamReader = new InputStreamReader(urlConnection.getInputStream(),"utf-8");
  BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  //讀取網(wǎng)頁內(nèi)容
  while ((rLine = bufferedReader.readLine()) != null){
   //判斷目標(biāo)節(jié)點(diǎn)是否出現(xiàn)
   if(rLine.contains(startNode)){
    isNode = true;
   }
   //若目標(biāo)節(jié)點(diǎn)出現(xiàn),則開始抓取數(shù)據(jù)
   if (isNode){
    //若目標(biāo)結(jié)束節(jié)點(diǎn)出現(xiàn),則結(jié)束讀取,節(jié)省讀取時間
    if (rLine.contains(endNode)) {
     //關(guān)閉讀取流
     bufferedReader.close();
     inputStreamReader.close();
     break;
    }
    //若值為空則不讀取
    if (((title = getName(rLine,keyOfTitle)) != "") && ((href = getHref(rLine,keyOfHref)) != "")){
     keyMap.put(title,href);
    }
   }
  }
  return keyMap;
 }
 //獲取詞條對應(yīng)的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;
 }
 //獲取詞條對應(yīng)的名稱
 private static String getName(String rLine,String keyOfTitle){
  String result = "";
  //獲取標(biāo)題內(nèi)容
  if(rLine.contains(keyOfTitle)){
   result = rLine.substring(rLine.indexOf(keyOfTitle) + keyOfTitle.length(),rLine.length());
   //將標(biāo)題中的內(nèi)容含有的標(biāo)簽去掉
   result = result.replaceAll("<em>|</em>|</a>|<a>","");
  }
  return result;
 }
}

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • Spring源碼解析容器初始化構(gòu)造方法

    Spring源碼解析容器初始化構(gòu)造方法

    這篇文章主要介紹了Spring源碼解析容器初始化構(gòu)造方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • 一篇文章帶你了解JAVA面對對象應(yīng)用

    一篇文章帶你了解JAVA面對對象應(yīng)用

    Java是一門面向?qū)ο蟮恼Z言。對象是Java程序中的基本實(shí)體。除了對象之外Java程序同樣處理基本數(shù)據(jù)。下面這篇文章主要給大家總結(jié)了關(guān)于Java中面向?qū)ο蟮闹R點(diǎn),需要的朋友可以參考借鑒,下面來一起看看吧
    2021-08-08
  • java:java.lang.ExceptionInInitializerError報(bào)錯解決過程

    java:java.lang.ExceptionInInitializerError報(bào)錯解決過程

    這篇文章主要給大家介紹了關(guān)于java:java.lang.ExceptionInInitializerError報(bào)錯的解決過程,java.lang.ExceptionInInitializerError 是一個異常,表示在初始化一個類的靜態(tài)變量或靜態(tài)塊時發(fā)生了錯誤,需要的朋友可以參考下
    2023-10-10
  • 手?jǐn)]一個Spring?Boot?Starter并上傳到Maven中央倉庫

    手?jǐn)]一個Spring?Boot?Starter并上傳到Maven中央倉庫

    本文主要介紹了手?jǐn)]一個Spring?Boot?Starter并上傳到Maven中央倉庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 使用Springboot實(shí)現(xiàn)OAuth服務(wù)的示例詳解

    使用Springboot實(shí)現(xiàn)OAuth服務(wù)的示例詳解

    OAuth(Open Authorization)是一個開放標(biāo)準(zhǔn),用于授權(quán)第三方應(yīng)用程序訪問用戶資源,而不需要共享用戶憑證。本文主要介紹了如何使用Springboot實(shí)現(xiàn)一個OAuth服務(wù),需要的可以參考一下
    2023-05-05
  • Java技能點(diǎn)之SimpleDateFormat進(jìn)行日期格式化問題

    Java技能點(diǎn)之SimpleDateFormat進(jìn)行日期格式化問題

    這篇文章主要介紹了Java技能點(diǎn)之SimpleDateFormat進(jìn)行日期格式化問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解Java 中的 AutoCloseable 接口

    詳解Java 中的 AutoCloseable 接口

    本文對 try-with-resources 語法進(jìn)行了較為深入的剖析,驗(yàn)證了其為一種語法糖,同時給出了其實(shí)際的實(shí)現(xiàn)方式的反編譯結(jié)果,相信你在看完本文后,關(guān)于 AutoCloseable 的使用你會有新的收獲。
    2020-11-11
  • java 中多線程生產(chǎn)者消費(fèi)者問題詳細(xì)介紹

    java 中多線程生產(chǎn)者消費(fèi)者問題詳細(xì)介紹

    這篇文章主要介紹了java 中多線程生產(chǎn)者消費(fèi)者問題詳細(xì)介紹的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Spring 依賴注入實(shí)現(xiàn)示例

    Spring 依賴注入實(shí)現(xiàn)示例

    這篇文章主要介紹了Spring 依賴注入實(shí)現(xiàn)示例的相關(guān)資料,幫助大家更好的理解和使用spring框架,感興趣的朋友可以了解下
    2020-11-11
  • 如何將Java對象轉(zhuǎn)換成JSON

    如何將Java對象轉(zhuǎn)換成JSON

    這篇文章主要介紹了如何將Java對象轉(zhuǎn)換成JSON,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11

最新評論