Ruby Mechanize屏幕抓取帮助
我试图在一张桌子上刮一排日期。 我想只刮掉今天有第三行的日期。
这是我的机械化代码。 我正在尝试选择colum row witch今天的日期及其及其列:
agent.page.search( “// TD”)的地图(:文本)。.MAP(&:条)
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
“
我想只刮掉今天的第三行。
而不是使用'//td'
遍历
标签,搜索
标签,只抓取第三个标签,然后循环'//td'
。
Mechanize在内部使用Nokogiri,所以这里是如何在Nokogiri-ese中使用它:
html = < 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 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"]
使用.search('//tr')[2].search('td').map{ |n| n.text }
.search('//tr')[2].search('td').map{ |n| n.text }
附加到Mechanize的agent.page
,如下所示:
agent.page.search('//tr')[2].search('td').map{ |n| n.text }
自从我使用Mechanize以来已经有一段时间了,所以它也可能是agent.page.parser...
编辑:
表格中会有更多行。 我要刮的行总是倒数第二。
将这些信息放入原始问题非常重要。 您的问题越准确,我们的答案就越准确。