【问题标题】:Ruby Mechanize screen scraping helpRuby Mechanize 屏幕抓取帮助
【发布时间】:2011-02-14 22:11:38
【问题描述】:

我正在尝试在带有日期的表格中刮下一行。我只想抓取具有今天日期的第三行。

这是我的机械化代码。我正在尝试选择具有今天日期及其列的列行女巫:

agent.page.search("//td").map(&:text).map(&:strip)

Output:
"11-02-2011", "1", "1", "1", "1", "0", "0,00 DKK", "0,00", "0,00 DKK", 
"12-02-2011", "5", "5", "1", "4", "0", "0,00 DKK", "0,00", "0,00 DKK", 
"14-02-2011", "1", "3", "1", "1", "0", "0,00 DKK", ",00", "0,00 DKK",
"7", "9", "3", "6", "0", "0,00 DKK", "0,00", "0,00 DKK

"

我只想抓取今天日期的第三行。

【问题讨论】:

    标签: ruby-on-rails ruby mechanize


    【解决方案1】:

    与其使用'//td' 循环遍历<td> 标签,不如搜索<tr> 标签,仅获取第三个标签,然后遍历'//td'

    Mechanize 在内部使用 Nokogiri,以下是 Nokogiri-ese 中的操作方法:

    html = <<EOT
    <table>
    <tr><td>11-02-2011</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td><td>0,00 DKK</td><td>0,00</td><td>0,00 DKK</td></tr>
    <tr><td>12-02-2011</td><td>5</td><td>5</td><td>1</td><td>4</td><td>0</td><td>0,00 DKK</td><td>0,00</td><td>0,00 DKK</td></tr>
    <tr><td>14-02-2011</td><td>1</td><td>3</td><td>1</td><td>1</td><td>0</td><td>0,00 DKK</td><td>,00</td><td>0,00 DKK</td></tr>
    </table>
    EOT
    
    require 'nokogiri'
    require 'pp'
    
    doc = Nokogiri::HTML(html)
    
    pp doc.search('//tr')[2].search('td').map{ |n| n.text }
    
    >> ["14-02-2011", "1", "3", "1", "1", "0", "0,00 DKK", ",00", "0,00 DKK"]
    

    使用附加到 Mechanize 的 agent.page.search('//tr')[2].search('td').map{ |n| n.text },如下所示:

    agent.page.search('//tr')[2].search('td').map{ |n| n.text }
    

    我玩Mechanize已经有一段时间了,所以它也可能是agent.page.parser...


    编辑:

    表格中会出现更多行。我要刮的行总是倒数第二行。

    将这些信息放入您的原始问题中很重要。您的问题越准确,我们的回答就越准确。

    【讨论】:

    • 非常感谢。问题是表格中会有更多的行。我要刮的行总是倒数第二行。
    • 我如何抓取倒数第二行:)?
    • 找到答案了:) agent.page.search('//tr')[-2].search('td').map{ |n| n.text }
    • @Rails 初学者:“agent.page.search('//tr')[-2].search('td').map{ |n| n.text }”。是的。很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2011-11-09
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多