2016-02-13 4 views
-1

Я пытаюсь вытащить имя, вес, и акций, принадлежащих таблице на вкладке Холдингс этой страницы: https://www.spdrs.com/product/fund.seam?ticker=DIAКак разобрать конкретную таблицу с помощью Nokogiri?

# get table headers 
headers = [] 
page.xpath('//*/table/thead/tr/th').each do |th| 
    headers << th.text 
end 

# get table rows 
rows = [] 
page.xpath('//*/table/tbody/tr').each_with_index do |row, i| 
    rows[i] = {} 
    row.xpath('td').each_with_index do |td, j| 
    rows[i][headers[j]] = td.text 
    end 
end 
puts page.xpath("//table//tr//td[1]/text()") 
p rows 

Это код, я прямо сейчас, и я не совсем уверен, как сделайте xpath. Вызов puts page.xpath("//table//tr//td[1]/text()") возвращает все метки для всех таблиц, но мне нужны только те, у которых есть названия компаний. Как я могу выбрать только данные конкретной таблицы и как переписать цикл, чтобы извлечь из этого?

+0

Добро пожаловать на переполнение стека. Пожалуйста, прочитайте «[mcve]». Вам нужно предоставить вход _minimal_, который демонстрирует проблему. Это означает, что HTML, с которым вы работаете, должен быть уменьшен до минимума, а затем добавлен в вопрос. Не ожидайте, что мы напишем код, который извлекает эту страницу, или что мы уменьшим его для вас, чтобы помочь вам. Вы должны помочь нам помочь вам. –

ответ

0

Другой способ сделать это, чтобы использовать CSS селекторы

rows = doc.css("div#FUND_TOP_HOLDINGS td").map(&:text).each_slice(3).to_a 
Смежные вопросы