最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

運行效果:

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

然后抓取你想要的標簽,注入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é)點
  String startNode = "<dl class=\"search-list\">";
  //詞條的鏈接關(guān)鍵字
  String keyOfHref = "href=\"";
  //詞條的標題關(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){
   //判斷目標節(jié)點是否出現(xiàn)
   if(rLine.contains(startNode)){
    isNode = true;
   }
   //若目標節(jié)點出現(xiàn),則開始抓取數(shù)據(jù)
   if (isNode){
    //若目標結(jié)束節(jié)點出現(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 = "";
  //獲取標題內(nèi)容
  if(rLine.contains(keyOfTitle)){
   result = rLine.substring(rLine.indexOf(keyOfTitle) + keyOfTitle.length(),rLine.length());
   //將標題中的內(nèi)容含有的標簽去掉
   result = result.replaceAll("<em>|</em>|</a>|<a>","");
  }
  return result;
 }
}

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

相關(guān)文章

  • java遠程連接Linux執(zhí)行命令的3種方式完整代碼

    java遠程連接Linux執(zhí)行命令的3種方式完整代碼

    在一些Java應(yīng)用程序中需要執(zhí)行一些Linux系統(tǒng)命令,例如服務(wù)器資源查看、文件操作等,這篇文章主要給大家介紹了關(guān)于java遠程連接Linux執(zhí)行命令的3種方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • 詳解如何使用IntelliJ IDEA新建一個Servlet項目

    詳解如何使用IntelliJ IDEA新建一個Servlet項目

    這篇文章主要介紹了詳解如何使用IntelliJ IDEA新建一個Servlet項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • SpringCloud Zuul和Gateway的實例代碼(搭建方式)

    SpringCloud Zuul和Gateway的實例代碼(搭建方式)

    本文主要介紹了SpringCloudZuul和SpringCloudGateway的簡單示例,SpringCloudGateway是推薦使用的API網(wǎng)關(guān)解決方案,基于SpringFramework5和ProjectReactor構(gòu)建,具有更高的性能和吞吐量
    2025-02-02
  • SpringBoot+阿里云OSS實現(xiàn)在線視頻播放的示例

    SpringBoot+阿里云OSS實現(xiàn)在線視頻播放的示例

    這篇文章主要介紹了SpringBoot+阿里云OSS實現(xiàn)在線視頻播放的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 解決Java & Idea啟動tomcat的中文亂碼問題

    解決Java & Idea啟動tomcat的中文亂碼問題

    這篇文章主要介紹了Java & Idea啟動tomcat的中文亂碼問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Spring MVC 請求處理流程步驟詳解

    Spring MVC 請求處理流程步驟詳解

    這篇文章主要介紹了Spring MVC 請求處理流程詳解,本文分步驟結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-04-04
  • Spring事務(wù)aftercommit原理及實踐

    Spring事務(wù)aftercommit原理及實踐

    這篇文章主要為大家介紹了Spring事務(wù)aftercommit原理及實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Spring中@Value設(shè)置默認值問題解決

    Spring中@Value設(shè)置默認值問題解決

    本文主要介紹了Spring中@Value設(shè)置默認值問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Java數(shù)據(jù)敏感詞轉(zhuǎn)換成符號的方法詳解

    Java數(shù)據(jù)敏感詞轉(zhuǎn)換成符號的方法詳解

    在某個論壇下用戶可以隨意留言,為了防止不法分子在網(wǎng)上任意沖浪,需要對一些敏感詞匯進行一些校驗,所以這篇文章給大家介紹了Java數(shù)據(jù)敏感詞轉(zhuǎn)換成符號的方法,需要的朋友可以參考下
    2024-03-03
  • java 中JXL操作Excel實例詳解

    java 中JXL操作Excel實例詳解

    這篇文章主要介紹了java 中JXL操作Excel實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評論

武定县| 安远县| 繁昌县| 西畴县| 锡林浩特市| 旺苍县| 中卫市| 洛浦县| 博罗县| 华容县| 横峰县| 星子县| 大石桥市| 沧州市| 弥勒县| 威海市| 北票市| 安多县| 中山市| 高安市| 长丰县| 左云县| 武汉市| 深水埗区| 色达县| 新民市| 雷州市| 静宁县| 临邑县| 镇巴县| 江阴市| 南宁市| 庄浪县| 介休市| 丽水市| 佛冈县| 黑水县| 额敏县| 信丰县| 宣城市| 犍为县|