Регулярное выражение Nutch не сканирует так, как я хочу

Хорошо, я уже спрашивал об этом, но, думаю, я не спрашивал об этом так, как ожидает stackoverflow. Надеюсь, на этот раз мне повезет больше и я получу ответ.

Я пытаюсь запустить 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 лет назад, но все это забыто.

Спасибо!


person Juan Acevedo    schedule 19.04.2013    source источник


Ответы (2)


По вашим комментариям я вижу, что вы что-то раньше сканировали и именно поэтому ваш Натч начинает сканировать Википедию.

Когда вы сканируете что-то с помощью Nutch, он записывает некоторые метаданные в таблицу (если вы используете Hbase, это таблица с именем веб-страницы). Когда вы заканчиваете сканирование и начинаете новое, эта таблица сканируется, и если есть запись с метада говорит «Эта запись может быть извлечена снова, потому что время следующего извлечения истекло» Nutch начинает извлекать эти URL-адреса, а также ваши новые URL-адреса.

Поэтому, если вы хотите, чтобы в вашей системе сканировался только http://www.tigerdirect.com/, вам необходимо сначала очистите эту таблицу. Если вы используете стартовую оболочку Hbase:

./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, но это другая тема для разговора.

person kamaci    schedule 23.04.2013
comment
Спасибо, позвольте мне попробовать это регулярное выражение. Я удаляю все свои данные solr, поэтому знаю, что у меня нет никаких записей. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я не могу найти способ просканировать страницы продуктов TigerDirect. Ссылка на страницы продуктов: tigerdirect.com/applications/category/guidedSearch.asp? затем CatID и т. д. - person Juan Acevedo; 23.04.2013
comment
Итак, если я запущу nutch во второй раз, он просто добавит данные, которые он уже сохранил внутри? Потому что, когда я очищаю данные solr и запускаю nutch, я получаю данные только последнего обхода, а не предыдущих. Что касается того, что я хочу сделать, в основном я хочу создать поисковую систему с проиндексированными продуктами от TigerDirect, поэтому я хочу сканировать TigerDirect один или два раза в день, чтобы получить всю информацию об их продуктах. Прямо сейчас я просто пытаюсь создать индекс их страниц. Далее я хотел бы получить данные с каждой страницы (но это не для этого вопроса), чтобы я мог отобразить их осмысленным образом. - person Juan Acevedo; 23.04.2013
comment
Когда вы даете seed.txt, Nutch помещает их в свою таблицу (процесс внедрения Nutch). Также, когда вы сканируете веб-сайты с помощью Nutch, он записывает все в таблицу. Когда вы снова запускаете Nutch, первое, что нужно сделать для Nutch, — это проверить эту таблицу. Начинает проверять URL-адреса в этой таблице. Если для URL пришло время следующей выборки, Nutch сканирует его. Если нет, я думаю, что он регистрирует, что пропустит этот URL. Поэтому, когда вы указываете новый seed.txt на Nutch, вы вводите новый URL-адрес в Nutch. Вот почему вы видите некоторые другие URL-адреса, когда Nutch начинает сканировать. - person kamaci; 23.04.2013
comment
@JuanAcevedo не могли бы вы это сделать? - person kamaci; 25.04.2013
comment
Привет, Камачи, извини, я был так занят вчера и сегодня над другим проектом. Я проверю это сегодня вечером или завтра. Я буду держать вас в курсе. Спасибо за вашу помощь! - person Juan Acevedo; 25.04.2013
comment
Привет Камачи, я не могу найти команду hbase. Можешь сказать где это находится? - person Juan Acevedo; 28.04.2013
comment
Используете ли вы Hbase для хранения документов, просканированных Nutch? - person kamaci; 29.04.2013
comment
Я использую nutch 1.X, должен ли я использовать 2.X? Вот почему я не могу найти hbase, я думаю. Поскольку срок моей награды истекает, я дам ее вам, поскольку вы ответили на первоначальный вопрос. - person Juan Acevedo; 29.04.2013
comment
Какую базу данных вы выбрали для хранения просканированных данных Nutch? - person kamaci; 30.04.2013

У вас есть / в конце обоих ваших регулярных выражений, но ваш URL-адрес не имеет.

http://tigerdirect.com/ совпадет, http://tigerdirect.com нет.

+^http://tigerdirect.com/([a-z0-9]*\.)* Попробуйте переместить косую черту в конце скобок +^http://tigerdirect.com(/[a-z0-9]*\.)*

person K0D4    schedule 19.04.2013
comment
Привет спасибо. Однако это не сработало. Натч все-таки пошел дальше и пролистал википедию. Есть идеи, почему? - person Juan Acevedo; 22.04.2013
comment
Подождите, он сканирует неправильный URL? Я заметил одну вещь: URL-адреса tigerdirect содержат не только a-z0-9. http://www.tigerdirect.com/applications/category/guidedSearch.asp?CatId=6838&cm_re=Homepage-_-Spot%2023-_-CatId_6838 вы также должны учитывать заглавные буквы, ?, =, &, %, - и _. Ваше регулярное выражение может быть лучше +^http://tigerdirect.com(/[a-zA-Z0-9-_&\?=%]*\.)* (не уверен, нужно ли экранировать ? с помощью этого механизма регулярных выражений) - person K0D4; 23.04.2013
comment
Хорошо, я думаю, мне нужно добавить остальные, чтобы сканировать то, что я хочу, но я даже не могу зайти так далеко. Он также просканировал Википедию, используя только регулярное выражение: +^tigerdirect.com(/[a-z0 -9]*\.)* - person Juan Acevedo; 23.04.2013
comment
URL-адреса Википедии далеко не так сложно вложены друг в друга. Чего я не понимаю, так это того, как он может сказать tigerdirect в регулярном выражении, но при этом сканировать Википедию. - person K0D4; 23.04.2013
comment
Хорошо, это была моя ошибка. Я случайно оставил +., когда я его удалил, теперь он не сканирует википедию, но nutch также не сканирует никакие ссылки tigerdirect.com/applications/category/guidedSearch.asp? связь. Если вы можете помочь мне с этим, я могу отметить ваш ответ как правильный. - person Juan Acevedo; 23.04.2013
comment
Я просмотрел учебник по Nutch на странице wiki.apache.org/nutch/ и в нем говорится, что вы должны просто поместить http://www.tigerdirect.com/ в seed.txt, а затем +. в файл фильтров URL. Это должно быть так - person K0D4; 24.04.2013
comment
Это не сработает, потому что будут взяты другие ссылки, которые не относятся к страницам продуктов. Таким образом, в основном он будет индексировать всю страницу. Но позвольте мне попробовать еще раз и вернуться к вам. Спасибо! - person Juan Acevedo; 24.04.2013
comment
Еще одна случайная вещь, которую следует учитывать: в TigerDirect есть файл robots.txt, который просит поисковых роботов не сканировать определенные части сайта. Не уверен, что Натч уважает эти области, но они существуют. - person K0D4; 25.04.2013