在网页抓取过程中,我想将当前页面的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将其保存到文件中。有什么想法吗?
答案 0 :(得分:1)
框架的行为很像一个完全独立的网页,虽然您可以看到渲染文档和dom中显示的内容,但框架的内容在技术上并不是页面的html的一部分。您可以在浏览器中看到这一点,右键单击主文档并查看html,然后将其与您右键单击框架中的内容并查看html进行比较。
要将所有html写入文件,您可能需要创建一个方法来写出帧的html,查找其他帧,并在内部找到的任何帧上递归调用相同的方法。
另外可能会看一下像nokogiri这样的宝石,它可以解析html,它可能有更好的方法来处理这类事情,或者现有的例子来说明如何做你想要的事情