我正在使用URL.openStream()
爲我正在編寫的爬蟲下載許多html頁面。該方法在我的Mac上本地運行良好,但是在我的學校unix服務器上,該方法非常緩慢。 但只有下載第一頁時。在學校的unix服務器上運行時,URL.openStream()速度很慢
這裏是下載頁面的方法:
public static String download(URL url) throws IOException {
Long start = System.currentTimeMillis();
InputStream is = url.openStream();
System.out.println("\t\tCreated 'is' in "+((System.currentTimeMillis()-start)/(1000.0*60))+"minutes");
...
}
並調用它的主要方法:
LinkedList<URL> ll = new LinkedList<URL>();
ll.add(new URL("http://sheldonbrown.org/bicycle.html"));
ll.add(new URL("http://www.trentobike.org/nongeo/index.html"));
ll.add(new URL("http://www.trentobike.org/byauthor/index.html"));
ll.add(new URL("http://www.myra-simon.com/bike/travel/index.html"));
for (URL tmp : ll) {
System.out.println();
System.out.println(tmp);
CrawlerTools.download(tmp);
}
輸出本地(注:所有的都是速度快):
http://sheldonbrown.org/bicycle.html 在0.00475分鐘創造 '是'
http://www.trentobike.org/nongeo/index.html 創造 '是' 在0.005083333333333333分鐘
http://www.trentobike.org/byauthor/index.html 創造 '是' 在0.0023833333333333332分鐘
http://www.myra-simon.com/bike/travel/index.html 創造 '是' 在0.00405分鐘
學校機器服務器上的輸出(注意:除第一個外,其他都很快。無論第一個網站是什麼)第一個是慢:
http://sheldonbrown.org/bicycle.html 創建 '是' 在3.2330666666666668分鐘
http://www.trentobike.org/nongeo/index.html 創建 '是' 在0.016416666666666666分鐘
http://www.trentobike.org/byauthor/index.html 創建'是'在0.0022166666666666667分鐘
http://www.myra-simon.com/bike/travel/index.html 創造「是」在0.009533333333333333分鐘
我不知道這是否是一個Java問題(*在我的Java代碼的問題)或服務器問題。我有什麼選擇?
當在服務器上運行,這是一次命令的輸出:
real 3m11.385s
user 0m0.277s
sys 0m0.113s
我不知道這是否是相關的......我應該怎麼做,試圖孤立我的問題。 。?
它是什麼類型的URL?這是發生在任何網址或只是特定的?它是什麼樣的連接? – 2010-10-17 13:51:00
即使需要3分鐘,你是否仍然會獲得完整的輸出?或者僅僅需要3分鐘才能超時並返回任何數據? – VoteyDisciple 2010-10-17 13:53:55
您可以在學校運行爬蟲嗎?無論如何,你最好的選擇是聯繫學校的網絡管理員。 – BalusC 2010-10-17 13:57:42