【问题标题】:Extracting text from a webtable in Watir / Ruby从 Watir / Ruby 中的 webtable 中提取文本
【发布时间】:2012-06-26 06:06:53
【问题描述】:

我正在尝试从损益表中提取数据,网址是 http://finance.yahoo.com/q/is?s=LMT+Income+Statement&annual

我无法使用 browser.table(:name, 'blah') 或 (:id, 'blah') 找到表格,但是使用 xpath 和 Nokogiri 使用此代码时遇到了一些运气,该代码在我已经初始化了所有内容并浏览到页面:

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

现在我可以获取 tobj 并将数据提取出来,但是尝试将对象作为表格进行操作对我没有任何好处。关于如何将表存储为变量的任何建议都会有所帮助。我可能可以计算出从那里迭代行/列,但我不介意你是否添加了一些可以做到这一点的代码。

【问题讨论】:

  • 您能解释一下您想如何“将对象作为表格进行操作”吗?你想把它解析成二维数组吗?对其进行矩阵运算?
  • 我想将表格解析成一个 excel 文档,然后我将其放入数据库等。我认为最好的方法是逐行进行将数据插入到 Excel 文档中。我想要它在 excel 文档中的原因是我可以更轻松地在各种格式之间传输它(至于操作数据,我将使用 R 和类似的包)

标签: ruby testing nokogiri watir


【解决方案1】:

你知道 Watir 支持 xpath 吗?

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

【讨论】:

  • 每次尝试此操作时都会出现此错误。定位=假消息一直困扰着我。 #<:htmlelement:0x4b664164 located="false" selector="{:xpath=">"//*[@id=\"yfncsumtab\"]"}>
  • located=false 不是错误消息。它是 ruby​​ 对象的字符串表示形式的一部分。请在新问题中提供更多信息。
【解决方案2】:

这样看:

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

【讨论】:

    【解决方案3】:

    试试browser.element(id: "yfncsumtab").text

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2012-08-29
      • 2021-07-20
      • 1970-01-01
      相关资源
      最近更新 更多