欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java抓取網(wǎng)頁(yè)數(shù)據(jù)獲取網(wǎng)頁(yè)中所有的鏈接實(shí)例分享

 更新時(shí)間:2013年12月31日 09:26:25   作者:  
java抓取網(wǎng)頁(yè)數(shù)據(jù)獲取網(wǎng)頁(yè)中所有的鏈接實(shí)例分享,使用方法,只要實(shí)例化HtmlParser時(shí)傳入網(wǎng)頁(yè)地址就可以了

效果圖



復(fù)制代碼 代碼如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HtmlParser {
 /**
  * 要分析的網(wǎng)頁(yè)
  */
 String htmlUrl;

 /**
  * 分析結(jié)果
  */
 ArrayList<String> hrefList = new ArrayList();

 /**
  * 網(wǎng)頁(yè)編碼方式
  */
 String charSet;

 public HtmlParser(String htmlUrl) {
  // TODO 自動(dòng)生成的構(gòu)造函數(shù)存根
  this.htmlUrl = htmlUrl;
 }

 /**
  * 獲取分析結(jié)果
  *
  * @throws IOException
  */
 public ArrayList<String> getHrefList() throws IOException {

  parser();
  return hrefList;
 }

 /**
  * 解析網(wǎng)頁(yè)鏈接
  *
  * @return
  * @throws IOException
  */
 private void parser() throws IOException {
  URL url = new URL(htmlUrl);
  HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  connection.setDoOutput(true);

  String contenttype = connection.getContentType();
  charSet = getCharset(contenttype);

  InputStreamReader isr = new InputStreamReader(
    connection.getInputStream(), charSet);
  BufferedReader br = new BufferedReader(isr);

  String str = null, rs = null;
  while ((str = br.readLine()) != null) {
   rs = getHref(str);

   if (rs != null)
    hrefList.add(rs);
  }

 }

 /**
  * 獲取網(wǎng)頁(yè)編碼方式
  *
  * @param str
  */
 private String getCharset(String str) {
  Pattern pattern = Pattern.compile("charset=.*");
  Matcher matcher = pattern.matcher(str);
  if (matcher.find())
   return matcher.group(0).split("charset=")[1];
  return null;
 }

 /**
  * 從一行字符串中讀取鏈接
  *
  * @return
  */
 private String getHref(String str) {
  Pattern pattern = Pattern.compile("<a href=.*</a>");
  Matcher matcher = pattern.matcher(str);
  if (matcher.find())
   return matcher.group(0);
  return null;
 }

 public static void main(String[] arg) throws IOException {
  HtmlParser a = new HtmlParser("http://news.163.com/");
  ArrayList<String> hrefList = a.getHrefList();
  for (int i = 0; i < hrefList.size(); i++)
   System.out.println(hrefList.get(i));

 }

}

相關(guān)文章

  • 使用多種方式實(shí)現(xiàn)遍歷HashMap的方法

    使用多種方式實(shí)現(xiàn)遍歷HashMap的方法

    下面小編就為大家?guī)?lái)一篇使用多種方式實(shí)現(xiàn)遍歷HashMap的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • 工廠方法在Spring框架中的運(yùn)用

    工廠方法在Spring框架中的運(yùn)用

    這篇文章介紹了工廠方法在Spring框架中的運(yùn)用,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • SpringBoot之如何正確、安全的關(guān)閉服務(wù)

    SpringBoot之如何正確、安全的關(guān)閉服務(wù)

    這篇文章主要介紹了SpringBoot之如何正確、安全的關(guān)閉服務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • IDEA配置JRebel實(shí)現(xiàn)熱部署的方法

    IDEA配置JRebel實(shí)現(xiàn)熱部署的方法

    這篇文章主要介紹了IDEA配置JRebel實(shí)現(xiàn)熱部署的方法,本文給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 教你用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的代碼生成器

    教你用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的代碼生成器

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著如何用Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的代碼生成器展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 通過(guò)代碼示例了解submit與execute的區(qū)別

    通過(guò)代碼示例了解submit與execute的區(qū)別

    這篇文章主要介紹了通過(guò)代碼示例了解submit與execute的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Bean?Searcher配合SpringBoot的使用詳解

    Bean?Searcher配合SpringBoot的使用詳解

    這篇文章主要介紹了Bean?Searcher配合SpringBoot的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • MyBatis使用注解開發(fā)和無(wú)主配置文件開發(fā)的情況

    MyBatis使用注解開發(fā)和無(wú)主配置文件開發(fā)的情況

    這篇文章主要介紹了MyBatis使用注解開發(fā)和無(wú)主配置文件開發(fā)的情況,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • java中實(shí)體類轉(zhuǎn)Json的2種方法

    java中實(shí)體類轉(zhuǎn)Json的2種方法

    本篇文章中主要介紹了java中實(shí)體類轉(zhuǎn)Json的2種方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。
    2017-01-01
  • 討論分析JDK17是否會(huì)代替JDK8

    討論分析JDK17是否會(huì)代替JDK8

    這篇文章主要為大家介紹了JDK17是否會(huì)代替JDK8的問(wèn)題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評(píng)論