使用Jsoup.connect()会发生什么?为什么这么慢?

时间:2015-11-23 04:22:00

标签: java android jsoup

我使用以下行加载文档

Document doc = Jsoup.connect("http://www.some.site.with.lotsof.images/")
        .header("Accept-Encoding", "gzip, deflate")
        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0")
        .maxBodySize(0)
        .timeout(600000).get();  // So Slow (~10 Seconds)
Elements lyricList = doc.getElementsByClass("some-class");

我只需要图像的src。所以我只需要加载普通的html文本。

由于从网址加载图片,这条线是否会变慢?

我的意思是Jsoup.connect()等待整个页面与图像一起加载吗?

2 个答案:

答案 0 :(得分:1)

由于以下原因,

Jsoup连接可能会变慢:

  • 您的互联网连接速度
  • CPU使用率(其他一些程序正在占用内存!)或
  • 您正在访问的网络服务器的响应速度

我一直在抓数千页,而上述三个(特别是第三个)是减速Jsoup.connect()的最可能的问题。在您的情况下,我相信您尝试连接的网络服务器会降低您的连接速度,因为Jsoup不会等待图片加载,它会为您提供最初的html来自服务器的响应是。

答案 1 :(得分:0)

与其使用Jsoup进行提取和解析,不如尝试结合OkHttp进行提取和Jsoup进行解析

OkHttpClient okHttp = new OkHttpClient();
Request request = new Request.Builder().url("https://example.com").get().build();
Document doc = Jsoup.parse(okHttp.newCall(request).execute().body().string());

这对我来说有很大的不同,这是我运行的简单基准测试的平均结果:

  

okHttp:283ms

     

Jsoup:476ms