使用Ruby,Nokogiri和Mechanize在包含最多行的数组中查找表

@p = mechanize.get(url) tables = @p.search('table.someclass') 

我基本上翻了大约200页,将表放在一个数组中,唯一的排序方法是找到行数最多的表。

所以我希望能够查看数组中的每个项目并选择行数最多的第一个项目。

我一直在尝试使用max_by但这不起作用,因为我需要搜索作为数组项的表,以找到tr.count。

两种方式:

 biggest = tables.max_by{ |table| table.css('tr').length } biggest = tables.max_by{ |table| table.xpath('.//tr').length } 

由于您没有给出示例url,因此这里有一个类似的搜索,显示可以使用max_by

 require 'mechanize' mechanize = Mechanize.new rows = mechanize.get("http://phrogz.net/").search('table#infoporn tbody tr') # Find the table row from the array that has the longest link URL in it biggest = rows.max_by{ |tr| tr.at_xpath('.//a/@href').text.length } p biggest.name, biggest.at('.//a/@href') #=> "tr" #=> [#]