Механизация обхода и разбора

Я пытаюсь просмотреть список страниц, найденных Mechanize. При поиске, который работает нормально, я получаю список совпадений с 10 записями на странице. Нижняя навигационная система приводит меня к количеству записей> 10. Отображение 10 на странице. Итак, 53 записи = 6 «групповых страниц», как я их называю.

Что я хочу сделать, так это использовать верхнюю страницу результатов поиска, чтобы сделать следующее:

  1. Возьмите html за каждой записью в этом списке. Я могу сделать это через итерацию.

  2. Перейдите по ссылке «[Далее]» внизу и повторяйте 1 и 2, пока не останется 2. По сути, это приведет к каждой записи.

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

    counter = 1
    puts "Counter: #{counter}"

    while agent.page.links_with(:text => '[Next]').count == 1
        page = agent.page.link_with(:text => '[Next]').click
        puts "Counter/Next: #{counter} / #{agent.page.links_with(:text => '[Next]').count}" 
        agent.page.links_with(text: '[complete profile]').each do |link|
            a = link.click      # link.click goes to each company page 
            r = a.body.to_s 
            r = r.gsub(/^\s+\n/, "")

            # enter company into db
            class Company < ActiveRecord::Base
            end

            company = Company.new
            company.cdate = DateTime.now
            company.status = 'new'
            company.requestID = req_id
            company.html = r
            company.save    
        end
        counter += 1
    end

Любое понимание ценится. Я знаю, что я близко.

Ваше здоровье


person Rich_F    schedule 22.01.2015    source источник


Ответы (1)


Решение: переместите метод click за страницу:

page = agent.click(page.link_with(:text => "[Next]"))
person Rich_F    schedule 23.01.2015