Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jsoup.connect()时会发生什么情况?为什么这么慢?_Java_Android_Jsoup - Fatal编程技术网

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

Java 使用Jsoup.connect()时会发生什么情况?为什么这么慢?,java,android,jsoup,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") .maxBodyS

我正在使用以下行加载文档

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文本

是否因为从URL加载图像而导致线路变慢


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

Jsoup
连接可能会变慢,原因是:

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

我已经抓取了数千页,以上三个(尤其是第三个)是最有可能减慢
Jsoup.connect()
速度的问题。在您的情况下,我相信是您试图连接的web服务器减慢了您的连接速度,因为
Jsoup
不会等待图像加载,它会从服务器获得任何初始
html
响应。

而不是使用
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+Jsoup:283ms

j组:476ms


你确定你的图像是从路径加载到资源,比如
,而不是像
那样在HTML代码中包含图像数据吗?是的,我肯定是这样的。我在调试期间复制并查看了整个html。