Требуется помощь при очистке экрана с помощью анемона и нокогири

У меня есть стартовая страница http://www.example.com/startpage , на которой 1220 списков разбиты на страницы стандартным образом например, 20 результатов на странице.

У меня есть рабочий код, который анализирует первую страницу результатов и переходит по ссылкам, которые содержат «example_guide / paris_shops» в своих URL. Затем я использую Nokogiri для извлечения конкретных данных с этой последней страницы. Все работает хорошо, и 20 результатов записываются в файл.

Однако я не могу понять, как заставить Anemone сканировать следующую страницу результатов (http://www.example.com/startpage ? page = 2), а затем продолжить синтаксический анализ этой страницы, а затем третьей страницы (http://www.example.com/startpage?page=3) и т. д.

Я хотел бы спросить, есть ли у кого-нибудь знает, как я могу заставить анемона запускаться на странице, анализировать все ссылки на этой странице (и следующий уровень данных для конкретных данных), но затем следовать разбиению на страницы на следующую страницу результатов, чтобы анемон снова мог начать синтаксический анализ и т. д. и дальше. Учитывая, что ссылки разбивки на страницы отличаются от ссылок в результатах, Anemone, конечно, не следует по ним.

В настоящий момент я загружаю URL-адрес для первой страницы результатов, позволяя ему закончить, а затем вставляю в следующий URL-адрес для второй страницы результатов и т. д. и т. д. Очень ручной и неэффективный, особенно для получения сотен страниц.

Любая помощь будет принята с благодарностью.

require 'rubygems'
require 'anemone'
require 'nokogiri'
require 'open-uri'

Anemone.crawl("http://www.example.com/startpage", :delay => 3) do |anemone|
  anemone.on_pages_like(/example_guide\/paris_shops\/[^?]*$/) do | page |

doc = Nokogiri::HTML(open(page.url))

name = doc.at_css("#top h2").text unless doc.at_css("#top h2").nil?
address = doc.at_css(".info tr:nth-child(3) td").text unless doc.at_css(".info tr:nth-child(3) td").nil?
website = doc.at_css("tr:nth-child(5) a").text unless doc.at_css("tr:nth-child(5) a").nil?

open('savedwebdata.txt', 'a') { |f|
  f.puts "#{name}\t#{address}\t#{website}\t#{Time.now}"
}
  end
end

5
задан ginga 1 October 2010 в 04:46
поделиться