Ruby + Anemone Web Crawler: регулярное выражение для сопоставления URL-адресов, заканчивающихся серией цифр - PullRequest
3 голосов
/ 02 декабря 2011

Предположим, я пытался просканировать веб-сайт и пропустить страницу, которая закончилась следующим образом:

http://HIDDENWEBSITE.com/anonimize/index.php?page=press_and_news&subpage=20060117

В настоящее время я использую гем Anemone в Ruby для сборки сканера. Я использую метод skip_links_like, но мой шаблон никогда не совпадает. Я пытаюсь сделать это как можно более общим, чтобы оно не зависело от подстраницы, а просто =2105925 (цифры).

Я пробовал /=\d+$/ и /\?.*\d+$/, но, похоже, это не работает.

Это похоже на Пропуск веб-страниц с расширением pdf, zip от сканирования в Anemone , но я не могу сделать это с цифрами вместо расширений.

Кроме того, тестирование на http://regexpal.com/ с шаблоном =\d+$ будет успешно соответствовать http://misc.com/test/index.php?page=news&subpage=20060118

EDIT:

Вот весь мой код. Интересно, кто-нибудь может понять, что именно не так.

require 'anemone'
...
Anemone.crawl(url, :depth_limit => 3, :obey_robots_txt => true) do |anemone|
  anemone.skip_links_like /\?.*\d+$/
  anemone.on_every_page do |page|
    pURL = page.url.to_s
    puts "Now checking: " + pURL
    bestGuess[pURL] = match_freq( manList, page.doc.inner_text )
    puts "Successfully checked"
  end
end

Мой вывод примерно такой:

...
Now checking: http://MISC.com/about_us/index.php?page=press_and_news&subpage=20110711
Successfully checked
...

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011
  Anemone.crawl(url, :depth_limit => 3, :obey_robots_txt => true, :skip_query_strings => true) do |anemone|
   anemone.on_every_page do |page|
     pURL = page.url.to_s
     puts "Now checking: " + pURL
      bestGuess[pURL] = match_freq( manList, page.doc.inner_text )
     puts "Successfully checked"
   end
 end
2 голосов
/ 02 декабря 2011

На самом деле /\?.*\d+$/ работает:

~> irb
> all systems are go wirble/hirb/ap/show <
ruby-1.9.2-p180 :001 > "http://hiddenwebsite.com/anonimize/index.php?page=press_and_news&subpage=20060117".match /\?.*\d+$/
 => #<MatchData "?page=press_and_news&subpage=20060117"> 
...