我正在尝试在此页面的"持股"选项卡中拉取"名称"、"重量"和"持有的股份"表:https://www.spdrs.com/product/fund.seam?ticker=DIA
# 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()")
调用返回所有表的所有标签,但我只想要带有公司名称的标签。如何仅选择该特定表的信息,以及如何重写循环以从中提取?
另一种使用 css 选择器的方法
rows = doc.css("div#FUND_TOP_HOLDINGS td").map(&:text).each_slice(3).to_a