如果网页大小,JSOUP不下载完整的HTML。这个或任何变通办法的任何替代方案?

时间:2015-01-22 07:13:28

标签: java html html-parsing jsoup

我试图获取HTML页面并解析信息。我刚发现有些页面没有使用Jsoup完全下载。我在命令行上使用curl命令检查,然后下载了完整的页面。最初我认为它是特定于网站的,但后来我尝试使用Jsoup随机解析任何大网页,发现它没有下载完整的网页。我尝试指定用户代理和超时属性仍然无法下载。这是我试过的代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashSet;
import java.util.Set;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class JsoupTest {
    public static void main(String[] args) throws MalformedURLException, UnsupportedEncodingException, IOException {
        String urlStr = "http://en.wikipedia.org/wiki/List_of_law_clerks_of_the_Supreme_Court_of_the_United_States";
        URL url = new URL(urlStr);
        String content = "";
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
            for (String line; (line = reader.readLine()) != null;) {
                content += line;
            }
        }
        String article1 = Jsoup.connect(urlStr).get().text();
        String article2 = Jsoup.connect(urlStr).userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6").referrer("http://www.google.com").timeout(30000).execute().parse().text();
        String article3 = Jsoup.parse(content).text();
        System.out.println("ARTICLE 1 : "+article1);
        System.out.println("ARTICLE 2 : "+article2);
        System.out.println("ARTICLE 3 : "+article3);
    }
}

在第1条和第2条中,当我使用Jsoup连接到网站时,我无法获得完整的信息,但在使用URL进行连接时,我获得了完整的页面。所以基本上第3条是完整的,这是使用URL完成的。我尝试过使用Jsoup 1.8.1Jsoup 1.7.2

1 个答案:

答案 0 :(得分:7)

使用方法maxBodySize

String article = Jsoup.connect(urlStr).maxBodySize(Integer.MAX_VALUE).get().text();