我想在站點的每個鏈接之後創建一個爬網程序,並檢查URL以查看它是否有效。現在我的代碼使用url.openStream()
打開URL。檢查網站的每個鏈接的最佳方法是什麼?
那麼創建爬蟲的最好方法是什麼?
我想在站點的每個鏈接之後創建一個爬網程序,並檢查URL以查看它是否有效。現在我的代碼使用url.openStream()
打開URL。檢查網站的每個鏈接的最佳方法是什麼?
那麼創建爬蟲的最好方法是什麼?
使用像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返回沒有內容) 。
使用內部鏈接分析工具分析搜索引擎蜘蛛可以在您網站的特定頁面上檢測到的鏈接。搜索...最佳實踐內部鏈接。鏈接數量:早在2008年,Matt Cutts(Google的網絡垃圾郵件小組負責人)建議將鏈接數限制爲每頁最多100個鏈接。
它應該是一個評論 – Billa
請參閱http://stackoverflow.com/questions/2495289/what-is-a-good-java-web-crawler-library –
我不想使用任何程序,我想自己編寫代碼,我會使用類似PHP的HTML DOM,或自己編碼 – Csabi