Heritrix DecidingScope регулярное выражение URI
Я использую HERITRIX для сканирования сайта под названием octetfarm.com. Я хотел бы, чтобы сканер сделал регулярное выражение для URI (или URL), и если присутствует строка "octetfarm", сканер должен принять ее.
Я сделал 2 правила
1 MatchesRegExpDecideRule "ПРИНЯТЬ" и регулярное выражение ".octetfarm."
2 rejectByDefault
Когда я запускаю сканер на octetfarm.com (мой очень простой тестовый сайт), первая страница - это просто ссылка, как показано ниже:
<a href="http://octetfarm.com/layer1/layer1.html">layer1</a>
Почему сканер не следует по той простой ссылке, которая содержит строку "octetfarm".
вот мои правила в XML
<newObject name="decide-rules" class="org.archive.crawler.deciderules.DecideRuleSequence">
<map name="rules">
<newObject name="rejectByDefault" class="org.archive.crawler.deciderules.RejectDecideRule">
</newObject>
<newObject name="octetfarm" class="org.archive.crawler.deciderules.MatchesRegExpDecideRule">
<string name="decision">ACCEPT</string>
<string name="regexp">*.octetfarm.*</string>
</newObject>
</map>
</newObject>
1 ответ
Регулярное выражение, которое вы перечислили там, не совсем верно; попробуйте это вместо:
<string name="regexp">.*octetfarm.*</string>
Единственная разница между этим и вашим - два предшествующих персонажа octetfarm
будучи полностью измененным
.*
в регулярном выражении это утверждение с двумя частями. .
говорит регулярному выражению совпадение с любым символом (обычно по умолчанию исключает символы новой строки), и *
говорит регулярному выражению, что оно соответствует 0 или более из того, что ему непосредственно предшествует.
Эффект этого регулярного выражения в полном случае состоит в том, чтобы соответствовать, если есть 0 или более символов до строки octetfarm
видно, а затем 0 или более любых символов.
Заворачивание строки octetfarm
с .*
любая сторона на самом деле важна только в том случае, если механизм регулярных выражений пытается сопоставить всю строку; Вы можете обнаружить, что для вас может работать только следующее регулярное выражение, так как в зависимости от настроек механизма регулярного выражения он может просто искать любой экземпляр в предоставленном тексте, где он находит совпадение:
<string name="regexp">octetfarm</string>