Nutch regex не ползет так, как я хочу
Хорошо, я уже спрашивал об этом, но, думаю, я не спрашивал, как ожидает стекоперемещение. Надеюсь, на этот раз мне повезет больше, и я получу ответ.
Я пытаюсь запустить Nutch для сканирования этого сайта: http://www.tigerdirect.com/
Я хочу, чтобы он сканировал этот сайт и все подссылки.
Проблема в том, что он не работает. В моем reg-ex файле я попробовал пару вещей, но ни одна из них не сработала:
+^http://([a-z0-9]*\.)*tigerdirect.com/
+^http://tigerdirect.com/([a-z0-9]*\.)*
мой urls.txt:
http://tigerdirect.com
По сути, я пытаюсь просканировать все страницы продуктов на их веб-сайте, чтобы создать поисковую систему (я использую solr) электронных продуктов. В конце концов я хочу сканировать bestbuy.com, newegg.com и другие сайты.
Кстати, я следовал этому руководству здесь: http://wiki.apache.org/nutch/NutchTutorial и я использую скрипт, упомянутый в сессии 3.3 (после исправления ошибки, которая у него была).
У меня есть опыт работы в java, android и bash, так что это немного ново для меня. Я делал регулярные выражения в Perl 5 лет назад, но это все забыто.
Спасибо!
2 ответа
По вашим комментариям я вижу, что вы что-то сканировали раньше, и именно поэтому ваш Nutch начинает сканировать Википедию.
Когда вы сканируете что-то с помощью Nutch, он записывает некоторую метаду в таблицу (если вы используете Hbase, это таблица с именем webpage). Когда вы заканчиваете сканирование и начинаете новый, эта таблица сканируется, и если есть запись с метадой, "эта запись может быть получена снова, потому что время следующей выборки прошло" Nutch начинает получать эти URL, а также ваши новые URL.
Так что, если вы хотите, чтобы в вашей системе был только что просканирован http://www.tigerdirect.com/ вам нужно сначала очистить эту таблицу. Если вы используете Hbase start shell:
./bin/hbase shell
и отключить таблицу:
disable 'webpage'
и наконец бросьте это:
drop 'webpage'
Я мог бы обрезать эту таблицу, но удалил ее.
Следующая вещь помещает это в ваш seed.txt:
http://www.tigerdirect.com/
Откройте файл regex-urlfilter.txt, расположенный по адресу:
nutch/runtime/local/conf
запишите эту строку в нее:
+^http://([a-z0-9]*\.)*www.tigerdirect.com/([a-z0-9]*\.)*
вы поставите эту строку вместо +.
Я указал сканировать субдомены tigerdirect, это зависит от вас.
После этого вы можете отправить его в solr для индексации и выполнить поиск по нему. Я попробовал это и работает, однако у вас могут быть некоторые ошибки на стороне Nutch, но это еще одна тема для разговора.
У вас есть / в конце обоих ваших регулярных выражений, но у вашего URL нет.
http://tigerdirect.com/
будет соответствовать, http://tigerdirect.com
не буду.
+^http://tigerdirect.com/([a-z0-9]*\.)*
Попробуйте переместить хвостовую косую черту внутри паренов+^http://tigerdirect.com(/[a-z0-9]*\.)*