我從購物網站抓取大量數據。例如考慮我抓取200頁數據,每頁有30個產品詳細信息。我正在抓取名稱,價格,imageURL和productURL。 productURL不會重複。如何在爬網時檢查產品URL是否重複以及避免數據庫的非重複值。我會給我試過下面的示例代碼..如何在抓取時消除大量數據中的重複問題
public void process(ArrayList<Item> results) {
Set<String> s = new HashSet<String>();
System.out.println("*****************OUTPUT****************");
StringBuilder dataBuilder;
System.out.println("TOTAL ITEMS " + results.size());
for (Item item : results) {
item.setSrc(xmlData.getSrc());
if (!item.getName().trim().equals("")
&& !item.getPrice().trim().equals("")
&& !item.getUrl().trim().equals("")) {
if (s.add(item.getUrl())) {
dao.insertToDB(item, xmlData.getOutput_DB());
} else {
system.out.println("url is repeating");
}
} else {
System.out.println("first loop failedddd");
}
}
}
我在這裏使用,但仍然設置在插入完成我能得到一些重複的網址後..我無法理解的問題。請幫我解決一下這個。
設置將只添加唯一的字符串,並區分大小寫。你確定你得到重複的網址嗎? – anonymous
是的,我得到suplicate。因爲我編寫了另一個代碼來檢查數據庫中的重複數據,並且我收到了一些。實際上我現在得到了解決方案.. Set對象是在本地聲明的,每次我調用這個process()函數時都會創建一個新對象。現在我宣佈它是全球性的。並且設置對象只創建一次。感謝您的支持。 – sarath