Может ли Anemone сканировать html-файлы, хранящиеся локально на моем жестком диске?

Я надеюсь собрать воедино несколько десятков тысяч страниц правительственных данных (в нескольких тысячах папок), находящихся в сети, и поместить их все в один файл. Чтобы ускорить процесс, я решил сначала загрузить сайт на свой жесткий диск, прежде чем сканировать его с помощью чего-то вроде Anemone + Nokogiri. Когда я пробовал пример кода с URL-адресом правительственного сайта в Интернете, все работало нормально, но когда я меняю URL-адрес на свой локальный путь к файлу, код запускается, но не выводит никаких результатов. Вот код:

url="file:///C:/2011/index.html"

Anemone.crawl(url) do |anemone|
  titles = []
  anemone.on_every_page { |page| titles.push page.doc.at

('title').inner_html rescue nil }
  anemone.after_crawl { puts titles.compact }
end

Таким образом, с локальным именем файла ничего не выводится, но оно успешно работает, если я подключаю соответствующий онлайн-URL. Anemone каким-то образом не может сканировать структуры локальных каталогов? Если нет, есть ли другие предлагаемые способы сканирования/скрапинга, или мне просто запустить Anemone на онлайн-версии сайта? Спасибо.


person jengman cd    schedule 31.05.2012    source источник


Ответы (1)


У вас есть пара проблем с этим подходом

  1. Anemone ожидает, что веб-адрес выдаст http-запрос, и вы передадите ему файл. Вместо этого вы можете просто загрузить файл с помощью nokogiri и выполнить синтаксический анализ через него.

  2. Ссылки на файлы могут быть полными URL-адресами, а не относительными путями, в этом случае вам все равно нужно отправить http-запрос.

Что вы можете сделать, так это загрузить файлы локально, а затем пройти через них с помощью nokogiri и преобразовать ссылки в локальный путь для Nokogiri для следующей загрузки.

person Yuriy Goldshtrakh    schedule 31.05.2012
comment
Ага, попал. Сам Nokogiri делает свое дело. Просто требуется немного больше работы, чтобы заставить его проходить и следовать по каждой ссылке, но он способен сканировать и очищать сам по себе. В этом случае Анемон не нужен, хотя, возможно, это сэкономило бы мне время. Спасибо Юрий. - person jengman cd; 02.06.2012