使用Jsoup抓取网页时,下载速度(连接)不稳定

时间:2015-10-07 10:09:03

标签: java networking connection jsoup wireless

我正在使用Jsoup用Java编写的程序来抓取网页。该程序需要刮掉大约450个网址(并不是那么多)。

问题是我在抓取时非常不稳定的下载速度

例如,前7个网址会在2秒内立即被下载,下载速度接近 1MB / s ,但下载速度会突然降低到 0.4KB / s 偶0KB / s ,导致程序花费13秒来刮取网址。这种波动不断发生,导致程序严重放缓。

这不是我的互联网连接问题,因为它发生在我的工作和家庭无线互联网上。即使当前网络速度指示器显示下载速度 0KB / s ,如果我通过浏览器打开网页,页面会立即加载,下载速度突然增加再次 1MB / s 。但是这种增加对我的程序没有任何影响,并且该程序仍然很慢地刮掉了网址。

可能是什么问题?有什么我需要配置以确保我的抓取程序的下载速度恒定吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

这是与外部资源(您需要下载的网址)密切相关的标准问题。

要解决此问题,您可以创建一个线程池,同时下载不同的资源。如果单次下载非常慢,同时下载可以让您更有可能达到带宽限制。

总下载时间将减少到接近您的带宽功能的值。

这是一个基本的最小例子。

ServerSocket serverSocket = new ServerSocket(portNumber);
Socket clientSocket = serverSocket.accept();

请记住首先启动服务器并启动客户端。

以下是一些指向线程池的链接,可以将它们用作实现线程池同时下载多个网址的起点:

答案 1 :(得分:1)

可能是程序受内存限制。尝试在启动Java进程时增加堆空间。