我一直试图从此网址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中有不同的间距。关于为什么会出现这种情况的任何建议,还有其他选择吗?
答案 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);
感谢所有帮助过的人