想写个程序读某个网站的某个网页里的某一部分的内容。
比如读新浪网站里的某个网页。
大概的思路是,网页到本地浏览器之后,已经是静态的html代码了。
这时候只要分析静态html代码,找到我需要的那一部分就可以了。
关键是先要能够在本地程序里得到这个网站的html代码。
不知道用servlet的filter功能是否可以实现这样的功能。
或者还有没有别的办法?望赐教。

解决方案 »

  1.   

    如果该网页提供了rss订阅功能的话,你直接把xml文件读过来用jdom或dom4j解析就好了
      

  2.   

    怎么感觉楼主像在做网页爬虫所做的事情啊,去看看网页爬虫吧,现在应该有很多实例代码或者书籍。不是简单的servlet和filter能做的哟。
      

  3.   

    谢谢1楼的回答。
    我看了一下,这个网页不支持rss订阅功能。http://finance.sina.com.cn/realstock/company/sh600756/nc.shtml网页是上面这个。我想从这个网页中把股票的价格读出来。
    还有别的什么方法吗?望赐教。
      

  4.   


    import java.net.HttpURLConnection;
    import java.net.URL;HttpURLConnection con = null;
    StringBuffer sb = new StringBuffer();URL url = new URL("http://finance.sina.com.cn/realstock/company/sh600756/nc.shtml");
    con  = (HttpURLConnection) url.openConnection();
    con.setConnectTimeout(5000);
    con.setReadTimeout(5000); 
    con.setInstanceFollowRedirects(false);
    con.setUseCaches(false);
    con.setAllowUserInteraction(false);
    con.connect();
    //返回流对象,并转换成字符串
    String line = "";
    java.io.BufferedReader URLinput = new java.io.BufferedReader(new java.io.InputStreamReader(con.getInputStream(),"gb2312"));
    while ((line = URLinput.readLine()) != null) {
    sb.append(line);
    }
    con.disconnect();
      

  5.   

    private  String getContentByGet(String url) {
     byte[] responseBody = null;
        //构造HttpClient的实例
        HttpClient httpClient = new HttpClient();
      
        GetMethod getMethod = new GetMethod(url);
        try {
    httpClient.executeMethod(getMethod);
          responseBody = getMethod.getResponseBody();     } catch (HttpException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
          getMethod.releaseConnection();
        }    
        if(responseBody==null){
         return null;
        }else{
         return new String(responseBody);
        }
    }
      public  List getMatcherGroup(String urlString,String regPattern){
       List retList = new ArrayList();
       String inputString = getInputString(urlString);
       if(inputString==null){
       return null;
       }
       PatternMatcher matcher = new Perl5Matcher();     
        org.apache.oro.text.regex.Pattern pattern = null;
        PatternMatcherInput input;
        MatchResult result;
        pattern = getPattern(regPattern);    
        input = new PatternMatcherInput(inputString);
        
        while (matcher.contains(input, pattern)) {      
          result = matcher.getMatch();      
          retList.add(result.group(0));      
        }
      
       return retList;
      }      public static org.apache.oro.text.regex.Pattern getPattern(String regExpression )  {
        //Create Perl5Compiler instances.
        PatternCompiler compiler = new Perl5Compiler();
        org.apache.oro.text.regex.Pattern pattern = null;    
        
        try {
          pattern = compiler.compile(regExpression); 
        } catch (Exception e) {
        }
        return pattern;
      }要用的时候就用 getMatcherGroup("http://........","正则表达式");
      

  6.   

    楼主不知道你是否打算解析得到的数据,如果是的话要用到lusence的技术,还有爬虫的算法,lz查一下
      

  7.   

    不好意思,我想继续问一下。
    用HttpURLConnection,输入一个正常的url,可以得到下面这样的html代码。          <tr class="Tb1Now">
                <td class="Tb1Li">当前价(元)</td>
                <td id="itemCurrent2" class="red">-</td>
                <td>&nbsp;</td>
              </tr>可是,我想知道itemCurrent2这个id的具体内容,请问该怎么办?
    有办法吗?
      

  8.   

    不多说楼主去网上查看一下HTMLParser的一些例子,相必对你能有帮助。专门进行解析网页用得
      

  9.   


    恩 对的,用socket编程,然后使用dom解析。 
    不过像csdn对rss也支持,那就更好了
      

  10.   

    结贴,目的已经达到了。
    最终的结果还是用HTMLParser配合百度或者google就可以了。
    以前小看百度了,其实百度的功能还是蛮强大的。
    谢谢楼上各位的帮助,真的帮了大忙。
      

  11.   

    就是一个解析字符串嘛 用 substring()  indexOf()  等几个方法就可以搞定了