我正在从购物网站抓取大量数据。例如,我认为我正在抓取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");
}
}
}
我在这里使用set但仍然在插入完成后我可能会得到一些重复的URL ...我无法理解这个问题。请帮我解决一下这个。
答案 0 :(得分:1)
if (!item.getName().trim().equals("")
&& !item.getPrice().trim().equals("")
&& !item.getUrl().trim().equals(""))
{
if (s.contains(item.getUrl())) {
system.out.println("url is repeating");
}
else {
dao.insertToDB(item, xmlData.getOutput_DB());
s.add(item.getUrl());
}
}
else {
System.out.println("first loop failedddd");
}