为什么Jsoup以不同的方式在Java / Android中抓取数据

时间:2012-02-09 21:47:43

标签: java android jsoup

我一直试图从此网址http://www.isleworthsyon.hounslow.sch.uk/

中删除“学校通知”

我尝试用Java抓取文本然后用一个使用String.replaceAll方法的新行替换所有“”(我不确定它是什么字符),并且它完美地工作,但是当我申请时与Android ..相同的代码给了我不同的结果。

IN JAVA:

String URL = "http://www.isleworthsyon.hounslow.sch.uk/";

Document site = null;
try {
    site = Jsoup.connect(URL).get();
} catch (IOException e) {

    e.printStackTrace();
}


        String HTML = site.html();

        site.select("a").remove();

        Elements news = site.select("div#np_91983-1");

        String output = news.text();


        String for_output_text = output.replaceAll("   ","\n\n");

        System.out.println(for_output_text);

}

}

IN ANDROID:

super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final TextView text = (TextView)findViewById(R.id.text);

        String URL = "http://www.isleworthsyon.hounslow.sch.uk/";

        Document site = null;
        try {
            site = Jsoup.connect(URL).get();
        } catch (IOException e) {

            e.printStackTrace();
        }

        site.select("a").remove();

        Elements news = site.select("div#np_91983-1");

        String output = news.text();

        String for_output_text = output.replaceAll("   ","\n\n");

        text.setText(for_output_text);
        }

两个输出文本不同,如下所示

http://dl.dropbox.com/u/35866688/Comparison.png

顺便说一下,这是我第一次进行网络抓取

编辑:经过实验,我从news.text()获得的字符串在java和android中有不同的间距。关于为什么会出现这种情况的任何建议,还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

最后!我找到了更好的解决方案;用于循环并分别添加每个元素。

final TextView text = (TextView)findViewById(R.id.text);

        String URL = "http://www.isleworthsyon.hounslow.sch.uk/";

        Document site = null;
        try {
            site = Jsoup.connect(URL).get();
        } catch (IOException e) {

            e.printStackTrace();
        }

        site.select("a").remove();

        Elements news = site.select("div#np_91983-1");

        Elements newsline = news.select("[align~=center]");

        String output = "";
        String  oldline = "";

        for (int i = 0; i < newsline.size(); i++) {


            String  newline = oldline + "\n" + newsline.get(i).text();  
            oldline = newline;
            output = newline;
          }           

        text.setText(output);

感谢所有帮助过的人