Радек. Я собираюсь показать вам, как ловить рыбу.
Когда вы звоните Mechanize::Page::parser
, он дает вам документ Нокогири. Таким образом, ваши звонки "xpath
" и "at_xpath
" вызывают Нокогири. Проблема в ваших путях. В общем, начните с самого общего xpath, который вы можете получить, а затем сузьте его. Так, например, вместо этого:
puts post_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div[2]/text()').to_s.strip
начать с этого:
puts post_page.parser.xpath('//table').to_html
Это получает любые таблицы, где угодно, а затем печатает их как HTML. Изучите HTML, чтобы увидеть, какие таблицы он вернул. Вероятно, он захватил несколько, когда вам нужен только один, поэтому вам нужно будет сказать ему, как выбрать тот стол, который вы хотите. Если, например, вы заметили, что у таблицы, которую вы хотите, есть класс CSS "userdata
", попробуйте следующее:
puts post_page.parser.xpath("//table[@class='userdata']").to_html
Каждый раз, когда вы не получаете массив, вы вводите в заблуждение путь к xpath, поэтому исправьте его, прежде чем продолжить. Получив нужную таблицу, попробуйте получить строки:
puts post_page.parser.xpath("//table[@class='userdata']//tr").to_html
Если это сработало, снимите «to_html
», и у вас теперь есть массив узлов Нокогири, каждый из которых представляет собой строку таблицы.
И вот как ты это делаешь.