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

JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法

 更新時(shí)間:2015年07月24日 09:36:05   作者:fzhlee  
這篇文章主要介紹了JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法,實(shí)例分析了java爬蟲的兩種實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法。分享給大家供大家參考。具體如下:

最近在用JAVA研究下爬網(wǎng)技術(shù),呵呵,入了個(gè)門,把自己的心得和大家分享下
以下提供二種方法,一種是用apache提供的包.另一種是用JAVA自帶的.

代碼如下:

// 第一種方法
//這種方法是用apache提供的包,簡(jiǎn)單方便
//但是要用到以下包:commons-codec-1.4.jar
// commons-httpclient-3.1.jar
// commons-logging-1.0.4.jar
public static String createhttpClient(String url, String param) {
  HttpClient client = new HttpClient();
  String response = null;
  String keyword = null;
  PostMethod postMethod = new PostMethod(url);
//  try {
//   if (param != null)
//    keyword = new String(param.getBytes("gb2312"), "ISO-8859-1");
//  } catch (UnsupportedEncodingException e1) {
//   // TODO Auto-generated catch block
//   e1.printStackTrace();
//  }
  // NameValuePair[] data = { new NameValuePair("keyword", keyword) };
  // // 將表單的值放入postMethod中
  // postMethod.setRequestBody(data);
  // 以上部分是帶參數(shù)抓取,我自己把它注銷了.大家可以把注銷消掉研究下
  try {
   int statusCode = client.executeMethod(postMethod);
   response = new String(postMethod.getResponseBodyAsString()
     .getBytes("ISO-8859-1"), "gb2312");
     //這里要注意下 gb2312要和你抓取網(wǎng)頁(yè)的編碼要一樣
   String p = response.replaceAll("http://&[a-zA-Z]{1,10};", "")
     .replaceAll("<[^>]*>", "");//去掉網(wǎng)頁(yè)中帶有html語(yǔ)言的標(biāo)簽
   System.out.println(p);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return response;
}
// 第二種方法
// 這種方法是JAVA自帶的URL來抓取網(wǎng)站內(nèi)容
public String getPageContent(String strUrl, String strPostRequest,
   int maxLength) {
  // 讀取結(jié)果網(wǎng)頁(yè)
  StringBuffer buffer = new StringBuffer();
  System.setProperty("sun.net.client.defaultConnectTimeout", "5000");
  System.setProperty("sun.net.client.defaultReadTimeout", "5000");
  try {
   URL newUrl = new URL(strUrl);
   HttpURLConnection hConnect = (HttpURLConnection) newUrl
     .openConnection();
   // POST方式的額外數(shù)據(jù)
   if (strPostRequest.length() > 0) {
    hConnect.setDoOutput(true);
    OutputStreamWriter out = new OutputStreamWriter(hConnect
      .getOutputStream());
    out.write(strPostRequest);
    out.flush();
    out.close();
   }
   // 讀取內(nèi)容
   BufferedReader rd = new BufferedReader(new InputStreamReader(
     hConnect.getInputStream()));
   int ch;
   for (int length = 0; (ch = rd.read()) > -1
     && (maxLength <= 0 || length < maxLength); length++)
    buffer.append((char) ch);
   String s = buffer.toString();
   s.replaceAll("http://&[a-zA-Z]{1,10};", "").replaceAll("<[^>]*>", "");
   System.out.println(s);
   rd.close();
   hConnect.disconnect();
   return buffer.toString().trim();
  } catch (Exception e) {
   // return "錯(cuò)誤:讀取網(wǎng)頁(yè)失敗!";
   //
   return null;
  }
}

然后寫個(gè)測(cè)試類:

public static void main(String[] args) {
  String url = "http://m.fzitv.net";
  String keyword = "腳本之家";
  createhttpClient p = new createhttpClient();
  String response = p.createhttpClient(url, keyword);
  // 第一種方法
  // p.getPageContent(url, "post", 100500);//第二種方法
}

呵呵,看看控制臺(tái)吧,是不是把網(wǎng)頁(yè)的內(nèi)容獲取了

希望本文所述對(duì)大家的java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 詳解Java的線程狀態(tài)

    詳解Java的線程狀態(tài)

    本文主要為大家詳細(xì)介紹一下Java的線程狀態(tài),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定的幫助,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-11-11
  • 如何通過一個(gè)注解實(shí)現(xiàn)MyBatis字段加解密

    如何通過一個(gè)注解實(shí)現(xiàn)MyBatis字段加解密

    用戶隱私很重要,因此很多公司開始做數(shù)據(jù)加減密改造,下面這篇文章主要給大家介紹了關(guān)于如何通過一個(gè)注解實(shí)現(xiàn)MyBatis字段加解密的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • Java?正則表達(dá)式URL?匹配與源碼全解析

    Java?正則表達(dá)式URL?匹配與源碼全解析

    在Web應(yīng)用開發(fā)中,我們經(jīng)常需要對(duì)URL進(jìn)行格式驗(yàn)證,今天我們結(jié)合?Java?的?Pattern?和?Matcher?類,深入理解正則表達(dá)式在實(shí)際應(yīng)用中的強(qiáng)大功能,并剖析一段實(shí)際的?Java?示例源碼,感興趣的朋友一起看看吧
    2025-04-04
  • springboot集成mybatis-plus全過程

    springboot集成mybatis-plus全過程

    本文詳細(xì)介紹了如何在SpringBoot環(huán)境下集成MyBatis-Plus,包括配置maven依賴、application.yaml文件、創(chuàng)建數(shù)據(jù)庫(kù)和Java實(shí)體類、Mapper層、Service層和Controller層的設(shè)置,同時(shí),還涵蓋了時(shí)間自動(dòng)填充、分頁(yè)查詢、多對(duì)一和一對(duì)多的數(shù)據(jù)庫(kù)映射關(guān)系設(shè)置
    2024-09-09
  • java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算

    java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)兩個(gè)文件的異或運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • java.imageIo給圖片添加水印的實(shí)現(xiàn)代碼

    java.imageIo給圖片添加水印的實(shí)現(xiàn)代碼

    最近項(xiàng)目在做一個(gè)商城項(xiàng)目, 項(xiàng)目上的圖片要添加水?、?添加圖片水印;②:添加文字水印;一下提供下個(gè)方法,希望大家可以用得著
    2013-07-07
  • 一文徹底搞懂Java和JDK的版本命名問題

    一文徹底搞懂Java和JDK的版本命名問題

    今天通過本文給大家分享我對(duì)Java的版本號(hào)以及JDK的命名的了解,通過實(shí)例圖文展示給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2021-06-06
  • string類和LocalDateTime的相互轉(zhuǎn)換方式

    string類和LocalDateTime的相互轉(zhuǎn)換方式

    這篇文章主要介紹了string類和LocalDateTime的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java中文件的讀寫方法之IO流詳解

    Java中文件的讀寫方法之IO流詳解

    這篇文章主要介紹了Java中文件的讀寫方法之IO流詳解,本文中的代碼所涉及到的路徑或者文件都是本人的,大家得換成自己的,并且大家可以在網(wǎng)上自行找一些材料作為讀入或者寫入的材料,不過路徑最好是英文的,不要包含中文,防止JVM讀取失敗
    2022-04-04
  • 還在用if(obj!=null)做非空判斷,帶你快速上手Optional

    還在用if(obj!=null)做非空判斷,帶你快速上手Optional

    這篇文章主要介紹了還在用if(obj!=null)做非空判斷,帶你快速上手Optional,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

渭南市| 宝兴县| 牙克石市| 开化县| 奎屯市| 拜城县| 和龙市| 浑源县| 临朐县| 澄江县| 江山市| 宁波市| 若尔盖县| 海盐县| 淮安市| 莱西市| 桂阳县| 南雄市| 泰安市| 札达县| 台前县| 庄河市| 巩留县| 西乌珠穆沁旗| 碌曲县| 尚志市| 兴国县| 道真| 汉源县| 讷河市| 万州区| 牙克石市| 鄱阳县| 达拉特旗| 沙坪坝区| 东乡族自治县| 北碚区| 小金县| 商水县| 丰都县| 新泰市|