JSoup不会获取所有项目?

时间:2013-11-20 20:26:30

标签: java html list parsing jsoup

所以,我试图使用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;
}

那么为什么List不包含所有条目?网页是否有错误?或者解析器?我可以使用解决方法绕过此问题吗?是什么导致了这个问题?

1 个答案:

答案 0 :(得分:20)

好的,发布是由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,以便允许无限大小的文件。更多信息可以在documentation中找到。 这将允许您拥有无限的体型并加载您需要的所有数据。