Я пытаюсь найти определенную ссылку / текст на странице и отслеживать ее, продолжая поиск по другим ссылкам.
У меня есть ссылка типа http://newyork.craigslist.org/,, и я хочу найти конкретный тип квартиры. Учитывая, что есть категория «жилье» со многими различными подкатегориями, я хочу начать с главной страницы, перейти к первой категории жилья и выполнить поиск по всем ссылкам для любого текста, который я ищу.
Я использую Nokogiri и буду использовать XPath для анализа всех ссылок, чтобы найти нужный текст.
Проблема в том, как я спускаюсь по дереву. Начиная с корневого URL и переходя к каждой «ветке», затем, когда я закончу синтаксический анализ этой ветви, вернитесь к корню и проверьте следующую ссылку.
Я пробовал много вариантов использования циклов, но я продолжал застрять в том, что кажется неправильным вложенным циклом.
Как мне подойти к переходу от корня к каждому и обратно к корню и к следующему? Какие структуры данных будут лучше, и как мне их структурировать?
Я буду использовать массив для возврата всех ссылок, которые соответствуют строке, которую я ищу, в каждой отдельной подкатегории, но как мне затем перейти оттуда к корню и продолжить это путешествие?
Я не использую Rails, а всего лишь сценарий Ruby 1.9.2 для скелетов.
Это решение должно быть в состоянии масштабироваться вверх или вниз на большее количество уровней. Если я хочу, чтобы скрипт потом проверял другие города рядом с Нью-Йорком, я не хочу каждый раз вводить новый город. Так что это был бы пример синтаксического анализа «вверх» дерева (еще один уровень выше текущего корня). Если бы я хотел изучить каждую возвращаемую ссылку и выполнить поиск по тексту на этой странице, я бы хотел, чтобы скрипт мог это делать. Так, например, после поиска в нью-йоркских списках квартиры, а не дома, скрипт возвращает несколько ссылок. Затем я хотел бы, чтобы сценарий детализировал каждую из этих квартир и просто нашел те, которые являются «2 спальнями». Так что это будет примером бурения «вниз» большего количества уровней.