用java解析一个网页

时间:2012-04-01 02:18:51

标签: java eclipse parsing standard-library

我希望将此网页上的实时费率解析为http://www.truefx.com/到我的java程序中,即我希望逐页刷新的网页数据不断流入我的计划。

如果可能的话,我想使用标准的java库来做这件事。我知道插件,如jsoup和可能的其他插件,但我不想下载和安装插件,因为我正在使用的计算机硬盘驱动器是基于加利福尼亚州除了一些核心程序,eclipse正在上它们会在系统重新启动时每晚被删除。

因此,如果有人知道标准eclipse下载中的包可以做到这一点,请告诉我!感谢


好的,所以我有这个工作,但似乎很慢。例如,数据将逐秒改变,即使我正在刷新我逐秒读取的网页(我使用thread.sleep(1000)),然后得到一个新的实例对于网页,它每分钟只更新一次。什么给了?

这是我的代码看起来像(我使用你上面发布的我的网址阅读器):

 public String getPage(String urlString){
        String result = "";
        //Access the page
        try {
         // Create a URL for the desired page
         URL url = new URL(urlString);
         // Read all the text returned by the server
         BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
         String str;
         while ((str = in.readLine()) != null) {
             // str is one line of text; readLine() strips the newline character(s)
             result += str;
         }
         in.close();             
        } catch (MalformedURLException e) {
        } catch (IOException e) {
        }          
        return result;
    }

    public static void main(String[]args){
        int i =0;
        Reading r = new Reading();

    while(true){
        try{Thread.sleep(1000);}catch(Exception e){}
        String page = new String(r.getPage("http://www.fxstreet.com/rates-charts/forex-rates/"));
        int index = page.indexOf("last_3212166");
        //System.out.println(i+page);
        i++;
        System.out.println(i+"GBP/USD: "+page.substring(index+14,index+20));
    }

1 个答案:

答案 0 :(得分:1)

使用无外部API ,只需导入 java.net.URL

,您就可以通过此功能获取页面
static public String getPage(String urlString){
    String result = "";
    //Access the page
    try {
     // Create a URL for the desired page
     URL url = new URL(urlString);
     // Read all the text returned by the server
     BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
     String str;
     while ((str = in.readLine()) != null) {
         // str is one line of text; readLine() strips the newline character(s)
         result += str;
     }
     in.close();             
    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }          
    return result;
}

然后使用 java.util.regex 来匹配您希望从该页面获取的数据。并将其解析为您的标签。不要忘记将所有这些放在线程中,并使用 while(true)循环,然后使用 sleep(some_time)来获得第二个第二个信息。