当任何..值知道时,是否有可能找到..文本?

时间:2013-01-22 20:11:24

标签: ruby mechanize mechanize-ruby

我的网页具有类似html格式的网页,如下所示:

<form name="test">

<td> .... </td>
  .
  .
  .
<td> <A HREF="http://www.edu/st/file.html">alo</A> </td>
<td> <A HREF="http://www.dom/st/file.html">foo</A> </td>
<td> bla bla </td>

</form>

现在,我只知道值bla bla,根据值我们可以跟踪或找到3rd last ..值(这里是alo)?我可以在HREF值的帮助下跟踪这些值,但HREF值并不总是固定,它们可以随时出现。

2 个答案:

答案 0 :(得分:1)

请参阅http://nokogiri.org/

它可以帮助您解析HTML代码,然后通过选择器

找到元素

答案 1 :(得分:1)

从HTML文档中提取每个<td>很简单,但这并不是导致DOM导航的简单方法。但是,鉴于示例HTML的局限性,这是一个解决方案。我怀疑它在真实世界的情况下会起作用。

Mechanize在内部使用Nokogiri进行繁重的工作,因此如果您已经需要Mechanize,则不需要require 'nokogiri'

require 'nokogiri'

doc = Nokogiri::HTML::DocumentFragment.parse(<<EOT)
<td> <A HREF="http://www.edu/st/file.html">alo</A> </td>
<td> <A HREF="http://www.dom/st/file.html">foo</A> </td>
<td> bla bla </td>
EOT

doc.search('td')[-3].at('a')['href']
=> "http://www.edu/st/file.html"

如何从Mechanize“代理”获取Nokogiri文档留给用户练习。