如何保存包含框架/ iframe的完整html页面?

时间:2015-02-12 11:14:29

标签: html ruby iframe web-scraping watir

在网页抓取过程中,我想将当前页面的html保存到文件中以供以后调试。在大多数情况下,browser.html会有所帮助,但当页面包含iframe /框架时,browser.html不会返回内容,我必须单独使用browser.iframe.html这样的内容 还有一种情况是iframe内部是另一个iframe。我可以递归地找到每个帧并保存其内容,但是分隔的文件不会非常有用,因为我不知道页面的确切结构。

例如,我有以下页面:

<!DOCTYPE html>
<html>
<head>
</head>
  <frameset cols="50%,20%,30%">
     <frame name="left" src="/html/left_frame.htm" />
     <frame name="right" src="/html/right_frame.htm" />
     <noframes>
       <body>
          Your browser does not support frames.
       </body>
     </noframes>
     <frame src="http://example.com"/>
  </frameset>
</html>

我想使用watir将其保存到文件中。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

框架的行为很像一个完全独立的网页,虽然您可以看到渲染文档和dom中显示的内容,但框架的内容在技术上并不是页面的html的一部分。您可以在浏览器中看到这一点,右键单击主文档并查看html,然后将其与您右键单击框架中的内容并查看html进行比较。

要将所有html写入文件,您可能需要创建一个方法来写出帧的html,查找其他帧,并在内部找到的任何帧上递归调用相同的方法。

另外可能会看一下像nokogiri这样的宝石,它可以解析html,它可能有更好的方法来处理这类事情,或者现有的例子来说明如何做你想要的事情