提取html代码的特定部分

时间:2013-01-18 15:12:50

标签: java html extract

我正在制作我的第一个Android应用程序,我必须使用HTML页面的代码。

其实我这样做:

    private class NetworkOperation extends AsyncTask<Void, Void, String > {
    protected String doInBackground(Void... params) {
        try {
            URL oracle = new URL("http://www.nationalleague.ch/NL/fr/");
            URLConnection yc = oracle.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            String inputLine;
            String s1 = "";
            while ((inputLine = in.readLine()) != null)
                s1 = s1 + inputLine;
            in.close();


            //return
            return s1;
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

但问题是需要花费太多时间。如何将HTML从第200行例证到第300行?

抱歉我的英语不好:$

3 个答案:

答案 0 :(得分:0)

您通过HTTP获取HTML文档。 HTTP通常依赖于TCP。所以...你不能只是“跳过线”!服务器将始终尝试向您发送您感兴趣的部分之前的所有数据,并且您的通信方必须确认接收此类数据。

答案 1 :(得分:0)

最佳案例使用,而非readLine()使用read(char[] cbuf, int off, int len)。另一种肮脏的方式

int i =0;
while(while ((inputLine = in.readLine()) != null)
i++;
if(i>200 || i<300 )
DO SOMETHING
in.close();)

答案 2 :(得分:0)

  1. 不要逐行阅读[使用read(char[] cbuf, int off, int len)]
  2. 不要连接字符串[使用StringBuilder]
  3. 打开缓冲的阅读器(就像你已经做的那样):

        URL oracle = new URL("http://www.nationalleague.ch/NL/fr/");
        BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));
    

    不是逐行阅读,而是阅读char[](我会使用大小约为8192的一个) 而不是使用StringBuilder附加所有阅读char

    阅读各种HTML源代码接口有点冒险,因为HTML页面源代码的格式可能会发生变化。