我有一个网页,其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
值并不总是固定的,它们可以随时是任何东西。
从 HTML 文档中提取每个<td>
很容易,但这并不是导航 DOM 的万无一失的方法。但是,鉴于示例 HTML 的限制,这里有一个解决方案。不过,我怀疑它在现实世界中是否有效。
在内部使用 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"
如何从机械化"代理"获取Nokogiri文档留给用户练习。
请参阅 http://nokogiri.org/
它可以帮助您解析HTML代码,然后通过选择器查找元素