加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby Mechanize表刮除不捕获整行

发布时间:2020-12-17 03:12:36 所属栏目:百科 来源:网络整理
导读:我试图用机械化刮一个表网站. 我想刮第二排. 当我跑: agent.page.search(‘table.ea’).search(‘tr’)[ – 2] .search(‘td’).map {| n | n.text} 我希望它会刮掉整排.但相反它只是刮擦:[“2011-02-17”,“0,00”] 为什么不抓取行中的所有列,而只是第一
我试图用机械化刮一个表网站.
我想刮第二排.

当我跑:

agent.page.search(‘table.ea’).search(‘tr’)[ – 2] .search(‘td’).map {| n | n.text}

我希望它会刮掉整排.但相反它只是刮擦:[“2011-02-17”,“0,00”]

为什么不抓取行中的所有列,而只是第一列和最后一列?

Xpath的:
/ HTML /体/中心/表/ tbody的/ TR [2] / TD [2] /表/ tbody的/ TR [3] / TD /表/ tbody的/ TR [2] / TD /表/ tbody的/ TR [2 ]

CSS路径:
html body center table tbody tr td table tbody tr td table tbody tr td table.ea tbody tr td.total

该页面与此类似:

<table><table><table>
<table width="100%" border="0" cellpadding="0" cellspacing="1" class="ea">
<tr>
    <th><a href="#">Date</a></th>
    <th><a href="#">One</a></th>    
    <th><a href="#">Two</a></th>    
    <th><a href="#">Three</a></th>     
    <th><a href="#">Four</a></th>    
    <th><a href="#">Five</a></th>        
    <th><a href="#">Six</a></th>        
    <th><a href="#">Seven</a></th>      
    <th><a href="#">Eight</a></th>
</tr>
<tr>
    <td><a href="#">2011-02-17</a></td>
    <td align="right">0</td>    
    <td align="right">0</td>    
    <td align="right">0,00</td>     
    <td align="right">0</td>    
    <td align="right">0</td>        
    <td align="right">0</td>    
    <td align="right">0</td>        
    <td align="right">387</td>      
    <td align="right">0,00</td>     <!-- FOV -->
    <td align="right">0,00</td>
</tr>
<tr>
    <td class="total">Ialt</td>
    <td class="total" align="right">0</td>  
    <td class="total" align="right">40</td>     
    <td class="total" align="right">0,46</td>   
    <td class="total" align="right">2</td>      
    <td class="total" align="right">0</td>        
    <td class="total" align="right">0</td>      
    <td class="total" align="right">0</td>        
    <td class="total" align="right">3.060</td>      
    <td class="total" align="right">0,00</td>       
    <td class="total" align="right">18,58</td>
</tr>
</table>
</table></table></table>

解决方法

使用以下Ruby代码( https://gist.github.com/835603):

require 'mechanize'
require 'pp'

a = Mechanize.new { |agent|
  agent.user_agent_alias = 'Mac Safari'
}

a.get('http://binarymuse.net/table.html') do |page|
  pp page.search('table.ea').search('tr')[-2].search('td').map{ |n| n.text }
end

我得到以下输出:

["2011-02-17","0","0,00","387",00"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读