2011-09-01 94 views
2

我想在站點的每個鏈接之後創建一個爬網程序,並檢查URL以查看它是否有效。現在我的代碼使用url.openStream()打開URL。檢查網站的每個鏈接的最佳方法是什麼?

那麼創建爬蟲的最好方法是什麼?

+0

請參閱http://stackoverflow.com/questions/2495289/what-is-a-good-java-web-crawler-library –

+0

我不想使用任何程序,我想自己編寫代碼,我會使用類似PHP的HTML DOM,或自己編碼 – Csabi

回答

4

使用像Jsoup這樣的HTML解析器。

Set<String> validLinks = new HashSet<String>(); 
Set<String> invalidLinks = new HashSet<String>(); 

Document document = Jsoup.connect("http://example.com").get(); 
Elements links = document.select("a"); 

for (Element link : links) { 
    String url = link.absUrl("href"); 

    if (!validLinks.contains(url) && !invalidLinks.contains(url)) { 
     try { 
      int statusCode = Jsoup.connect(url).execute().statusCode(); 

      if (200 <= statusCode && statusCode < 400) { 
       validLinks.add(url); 
      } else { 
       invalidLinks.add(url); 
      } 
     } catch (Exception e) { 
      invalidLinks.add(url); 
     } 
    } 
} 

您可能要發送HEAD而不是循環內,使之更有效率,但你將不得不使用URLConnection不是作爲Jsoup設計不支持它(HEAD返回沒有內容) 。

+0

聽起來不錯,但我還有1個問題:我怎麼可以包括或導入jsoup? – Csabi

+0

呃,只要把JAR文件放入classpath即可。這與其他JAR並無不同。如果您使用Eclipse之類的IDE,只需將其放在項目的根文件夾中,然後右鍵單擊並選擇*添加以構建路徑*。如果你正在做簡單的'javac/java',只需將JAR文件的路徑添加到'-cp'參數。 – BalusC

0

使用內部鏈接分析工具分析搜索引擎蜘蛛可以在您網站的特定頁面上檢測到的鏈接。搜索...最佳實踐內部鏈接。鏈接數量:早在2008年,Matt Cutts(Google的網絡垃圾郵件小組負責人)建議將鏈接數限制爲每頁最多100個鏈接。

+0

它應該是一個評論 – Billa

相關問題