我是Ruby和Capybara的新手,我正在尝试使用capybara-webkit来抓取一个网站。我感兴趣的所有数据都在td
标签中,并带有某些属性。
form
是我正在查看的特定表单元素,以下代码有效:
form.all('td').detect do |td|
if td['valign'] == 'top' && td['nowrap'] != 'nowrap'
print "#{td.text}\n"
end
end
我感兴趣的所有td
元素的内容都正确打印出来。但是,当我尝试用正则表达式解析文本时:
form.all('td').detect do |td|
if td['valign'] == 'top' && td['nowrap'] != 'nowrap'
print "#{td.text}\n"
val1, val2 = td.match(/(\d)(\d)/).captures # The real regex is more complex
end
end
...突然只读取/解析了第一个td
元素。我甚至尝试将每个td.text
值推送到一个数组中以便以后解析,但同样的事情发生了。我甚至尝试克隆td.text
字符串并对其进行操作 - 没有运气。页面上似乎没有任何类型的超时会更改HTML元素。绝对不知道是什么导致了这一点。
有什么想法吗?