Как очистить сайт с несколькими страницами и создать одну HTML-страницу с Ruby? - PullRequest
1 голос
/ 05 ноября 2011

Итак, я хотел бы почистить этот сайт: http://boxerbiography.blogspot.com/ и создайте одну HTML-страницу, которую я могу распечатать или отправить на мой Kindle.

Я думаю об использовании Hpricot, но не совсем уверен, как действовать.

Как мне настроить его так, чтобы он рекурсивно проверял каждую ссылку, получал HTML, либо сохранял ее в переменной, либо выводил ее на главную страницу HTML, а затем возвращался к оглавлению и продолжал это делать?

Вам не нужно ТОЧНО указывать мне, как это сделать, а только теорию, по которой я мог бы подойти к этому.

Должен ли я в буквальном смысле посмотреть на источник одной из статей (которая КРАЙНЕ ужасно кстати), например view-source: http://boxerbiography.blogspot.com/2006/12/10-progamer-lim-yohwan-e-sports-icon.html и вручную запрограммировать скрипт для извлечения текста между определенными тегами (например, h3, p и т. д.)?

Если я сделаю такой подход, то мне придется посмотреть на каждый отдельный источник для каждой главы / статьи, а затем сделать это. Кинда побеждает цель написания сценария, не так ли?

В идеале я хотел бы сценарий, который сможет отличить JS от другого кода и просто «текст» и вывести его (отформатированный с соответствующими заголовками и тому подобное).

Был бы очень признателен за руководство.

Спасибо.

1 Ответ

1 голос
/ 05 ноября 2011

Я бы рекомендовал использовать Nokogiri вместо Hpricot. Он более надежный, использует меньше ресурсов, меньше ошибок, проще в использовании и быстрее.

Я выполнил некоторые предварительные расчеты для работы вовремя, и мне пришлось переключиться на Нокогири, потому что Hpricot неожиданно зависал на некоторых страницах.

Проверьте это RailsCast:

http://railscasts.com/episodes/190-screen-scraping-with-nokogiri

и

http://nokogiri.org/

http://www.rubyinside.com/nokogiri-ruby-html-parser-and-xml-parser-1288.html

http://www.engineyard.com/blog/2010/getting-started-with-nokogiri/

...