Nutch: просканируйте неработающие ссылки и проиндексируйте их в Solr

Моя цель — определить, сколько URL-адресов на HTML-странице недействительны (404, 500, HostNotFound). Итак, в Nutch есть изменение конфигурации, которое мы можем сделать, с помощью которого веб-краулер просматривает неработающие ссылки и индексирует их в solr.

Как только все неработающие и действительные ссылки будут проиндексированы в Solr, я могу просто проверить недействительные URL-адреса и удалить их со своей HTML-страницы.

Любая помощь будет высоко оценена.

Заранее спасибо.


person Deep Lotia    schedule 11.12.2013    source источник


Ответы (2)


Вам не нужно индексировать solr, чтобы найти битые ссылки. Сделайте следующее:

bin/nutch readdb <crawlFolder>/crawldb/ -dump myDump

Это даст вам ссылки с ошибкой 404 как:

Status: 3 (db_gone)
Metadata: _pst_: notfound(14)

просмотрите выходной файл, и вы найдете все неработающие ссылки.

Пример:

  1. Поместите в файл URL "http://www.wikipedia.com/somethingUnreal http://en.wikipedia.org/wiki/NocontentPage"
  2. Запустите команду сканирования:bin/nutch crawl urls.txt -depth 1
  3. Запустите команду readdb:bin/nutch readdb crawl-20140214115539/crawldb/ -dump mydump
  4. Откройте выходной файл «part-xxxxx» в текстовом редакторе.

Результаты:

http://en.wikipedia.org/wiki/NocontentPage  Version: 7
Status: 1 (db_unfetched)
...
Metadata: _pst_: exception(16), lastModified=0: Http code=503, url=http://en.wikipedia.org/wiki/NocontentPage

http://www.wikipedia.com/somethingUnreal    Version: 7
Status: 5 (db_redir_perm)
...
Metadata: Content-Type: text/html_pst_: moved(12), lastModified=0: http://www.wikipedia.org/somethingUnreal
person Diaa    schedule 14.02.2014
comment
Большое спасибо, Диа. я попробую - person Deep Lotia; 10.04.2014

Эта команда даст вам дамп только неработающих ссылок:

bin/nutch readdb <crawlFolder>/crawldb/ -dump myDump -status db_gone

Не забудьте исключить из дампа URL-адреса со следующим тегом, так как он создается с учетом robots.txt:

Metadata: _pst_=robots_denied(18)

person Samir    schedule 09.05.2018