/ / Чи цей веб-сканер виконує пошук у першу ширину чи пошук на глибині? - java, веб-сканер, широта-перший-пошук, глибина-перший-пошук

Чи робить цей веб-сканер першим пошуком ширини або першим пошуком по глибині? - Java, веб-сканер, широта першого пошуку, глибина першого пошуку

Хтось знає, чи веб-сканер, описаний тут використовує пошук у глибині першої чи першої ширини? Мій інстинкт говорить, що це "перший пошук у широту, але я не впевнений у цьому на 100%.

Також, чи звичайна річ веб-сканеру використовувати ці способи пошуку (зокрема, за допомогою рекурсії)?

Відповіді:

2 для відповіді № 1

Це глибокий перший пошук. Зверніть увагу на цей код:

//get all links and recursively call the processPage method
Elements questions = doc.select("a[href]");
for(Element link: questions){
if(link.attr("href").contains("mit.edu"))
processPage(link.attr("abs:href"));
}

Цей код буде рекурсивно вивчати всі посиланнязнайдений на сторінці, повністю вивчивши перше посилання та все, що доступно, потім друге посилання та все, що доступне тощо. Отже, це досліджується у глибині першої моди.

Однак це буде дійсно повільно, тому що лише одна нитка робить церозвідка. Це, мабуть, було б набагато ефективніше, якби воно було переписане як модифікований BFS, який ставив невивчені сторінки до робочого списку і мав купу ниток, які захоплювали невивчені сторінки та обробляли їх.

Також не дуже корисно використовувати рекурсію, колививчення веб-посилань. Якщо ви спробуєте це зробити, ви легко підірвете стек викликів, оскільки будь-який достатньо великий веб-сайт матиме посилання, які проходять повсюдно.

Сподіваюся, це допомагає!