Привет! Я пытаюсь реализовать этот псевдокод для алгоритма паука для изучения Интернета. Нужна идея для моего следующего шага псевдокода: "использовать SpiderLeg для извлечения контента", у меня есть метод в другом классе SpiderLeg, у которого есть метод для получения всех URL-адресов этой веб-страницы, но мне интересно, как я могу использовать его в этом классе??
// method to crawl web and print out all URLs that the spider visit
public List<String> crawl(String url, String keyword) throws IOException{
String currentUrl;
// while list of unvisited URLs is not empty
while(unvisited != null ){
// take URL from list
currentUrl = unvisited.get(0);
//using spiderLeg to fetch content
SpiderLeg leg = new SpiderLeg();
}
return unvisited;
}
Ваше здоровье!! Попробую это ... Однако я пробовал это без использования очереди DS, это почти работает, но не останавливает программу при поиске какого-либо слова.
И когда он находит, он показывает только ссылку на веб-страницу, а не все конкретные URL-адреса, где он находит слово. Интересно, можно ли так?
private static final int MAX_PAGES_TO_SEARCH = 10;
private Set<String> pagesVisited = new HashSet<String>();
private List<String> pagesToVisit = new LinkedList<String>();
public void crawl(String url, String searchWord)
{
while(this.pagesVisited.size() < MAX_PAGES_TO_SEARCH)
{
String currentUrl;
SpiderLeg leg = new SpiderLeg();
if(this.pagesToVisit.isEmpty())
{
currentUrl = url;
this.pagesVisited.add(url);
}
else
{
currentUrl = this.nextUrl();
}
leg.getHyperlink(currentUrl);
boolean success = leg.searchForWord(searchWord);
if(success)
{
System.out.println(String.format("**Success** Word %s found at %s", searchWord, currentUrl));
break;
}
this.pagesToVisit.addAll(leg.getLinks());
}
System.out.println("\n**Done** Visited " + this.pagesVisited.size() + " web page(s)");
}