从其他网站嵌入HTML部分?

时间:2009-06-15 20:49:40

标签: html embed

有没有办法只在另一个HTML页面中嵌入网站的一部分?

示例:我看到了一个我想要博客的答案,所以我抓住了HTML内容,并将其展示在某个地方,并仅显示它,就像它在stackoverflow上一样。基本上,我想用原始样式来阻止页面部分,如果这是有道理的。这是网站本身必须提供的东西,还是我可以使用iframe并告诉它只显示某个元素或某些东西疯狂?打开所有选项,但我希望它显示为HTML,而不是图像(这真的是最后的手段)。

如果可能的话,我是否需要注意安全问题?

5 个答案:

答案 0 :(得分:7)

不要认为图像应该是最后的手段。您无法控制源页面的HTML / CSS,因此即使您制定解决方案(可能通过使用JavaScript来解析所需的代码段),也无法保证明天网站不会决定更改其布局。

即使是掌控了stackoverflow.com布局的杰夫,仍然更喜欢screen-capture网站,而不是直播内容。

现在,如果您的目标是让内容自动更新,那将是另一回事。但是,除非你使用一些商定的共享内容的方法,比如RSS,否则你的解决方案将非常脆弱。

答案 1 :(得分:2)

您所描述的概念大致是所谓的“紫色包含”或“转换”。那里有一个图书馆,但它没有完全积极开发。这里有几个ajaxian articles就可以了。

答案 2 :(得分:1)

我建议使用Python的服务器端解决方案;使用urllib2请求页面,然后使用BeautifulSoup解析出您需要的位。 BeautifulSoup有一个非常灵活的选择api,你可以用它来制作你感兴趣的部分的启发式。

举例说明:

soup = BeautifulSoup(html)
text = soup.find(text="Some text on the page that is unlikely to change")
print soup.parent.prettify()

这样,如果网站管理员稍后更改了网页上的标记,您的抓取脚本仍应有效。

答案 3 :(得分:1)

在客户端<iframe>是唯一可行的选择。可以滚动它,但从长远来看它可能不起作用,因为它在技术上接近点击劫持攻击。

还有跨站点XHR,但需要从目标站点选择加入,而今天只能在少数最新浏览器中使用。

在服务器端获取HTML很容易(每个体面的Web框架都能够下载页面并解析HTML,您可以使用XPath / XSLT或DOM来提取您想要的位)。

然而,获取样式会很棘手 - CSS规则可能不适用于脱离上下文的HTML片段。您必须解析CSS,提取和转换规则或使用浏览器并阅读每个节点的currentStyle

显然,你必须大量过滤你提取的HTML以避免XSS。它比看起来更难。

如果您不需要自动执行此操作,那么一个好的HTML + CSS WYSIWYG编辑器可能能够使用样式提取内容片段。

答案 4 :(得分:0)

这听起来像IE8的Web Slices非常适合。但是,它仅在IE8中可用,并且原始站点必须为您实现才能利用它。