因此,我尝试使用 JSoup 解析一个简单的列表。不幸的是,程序仅返回列表中以 N 开头的条目之前的条目。我不知道为什么会这样。这是我的代码:
public ArrayList<String> initializeMangaNameList(){
Document doc;
try {
doc = Jsoup.connect("http://www.mangahere.com/mangalist/").get();
Elements items = doc.getElementsByClass("manga_info");
ArrayList<String> names = new ArrayList<String>();
for(Element item: items){
names.add(item.text());
}
return names;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
那么为什么列表不包含所有条目呢?网页有错误吗?或者也许是解析器?我可以使用解决方法来绕过此问题吗?首先是什么导致了这个问题?
好吧,这个问题是由 JSoup 1.72 及更高版本的更改引起的。您只需要更改默认设置,如下所示:
public ArrayList<String> initializeMangaNameList(){
Document doc;
try {
doc = Jsoup.connect("http://www.mangahere.com/mangalist/").maxBodySize(0).get();
Elements items = doc.getElementsByClass("manga_info");
ArrayList<String> names = new ArrayList<String>();
for(Element item: items){
names.add(item.text());
}
return names;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
重要的区别是将 maxBodySize 设置为 0,以便允许无限大小的文件。更多信息可以在文档 https://jsoup.org/apidocs/org/jsoup/Connection.Request.html。
这将允许您拥有无限的主体大小并加载您需要的所有数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)