2012-06-24 4 views
1

Я пытаюсь извлечь данные из о прибылях и убытках, гиперссылка является http://finance.yahoo.com/q/is?s=LMT+Income+Statement&annualИзвлечение текста из webtable в Watir/Руби

Мне не удалось найти таблицу с помощью browser.table (: имя, «бла ') или (: идентификатор, „ли“), но было немного удачи, используя XPath с Nokogiri с помощью этого кода, который подхватывает после того как я инициализируюсь все и просмотрен на страницу:

page_html = Nokogiri::HTML.parse(browser.html) 
tobj = page_html.xpath('//*[@id="yfncsumtab"]').inner_text 

Теперь я m можно взять tobj и вытащить данные, но это не помогает мне пытаться манипулировать объектом в виде таблицы. Любые предложения о том, как сохранить таблицу в качестве переменной, помогут. Вероятно, я могу найти итерацию через строки/столбцы, но я бы не прочь, если бы вы применили какой-то код, который бы это сделал.

+0

Можете ли вы объяснить, как вы хотите «манипулировать объект в виде таблицы»? Вы хотите разобрать его в 2d-массив? Выполнить на нем матричные операции? –

+0

Я хотел бы проанализировать таблицу в документе excel, который позже я буду помещать в db и т. Д. Лучший способ сделать это, хотя я бы пошел по строкам и вставлял данные в документ excel , Причина, по которой я хочу его в excel doc, заключается в том, что я могу легче переносить его между различными форматами (как для манипулирования данными, я бы использовал R и подобные пакеты) –

ответ

0

Посмотрите на это следующим образом:

doc = Nokogiri::HTML.parse(browser.html) 
table = doc.at('table#yfncsumtab') 

# iterate through tr's 
table.search('tr').each do |tr| 
    # do something with tr 
end 
1

Вы знаете Watir поддерживает XPATH?

browser.element(:xpath => '//*[@id="yfncsumtab"]') 
+0

Я получаю эту ошибку каждый раз, когда я пытаюсь это сделать. Оказавшееся ложное сообщение преследует меня. # "// * [@ id = \" yfncsumtab \ "]"}> –

+0

'local = false' не является сообщением об ошибке. Он является частью строкового представления объекта ruby. Пожалуйста, предоставьте дополнительную информацию в новом вопросе. –

0

Попробуйте browser.element(id: "yfncsumtab").text

Смежные вопросы