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。