解析文档时是不是可以检测 HTML 元素的位置(页脚、侧边栏)?

Posted

技术标签:

【中文标题】解析文档时是不是可以检测 HTML 元素的位置(页脚、侧边栏)?【英文标题】:Is it possible to detect position (footer, sidebar) of HTML element when parsing document?解析文档时是否可以检测 HTML 元素的位置(页脚、侧边栏)? 【发布时间】:2011-12-18 12:25:47 【问题描述】:

我正在尝试开发一个脚本(在 php 中)来分析网页,并想知道是否可以检测页面上图像或链接的位置,无论它是否位于 a) 顶部/底部页面或b)在左侧/右侧以及页面的上半部分/下半部分。我想知道是否有任何准确的方法来解析 html 并准确检测这些元素在页面上显示的位置。

【问题讨论】:

@Dagon 是否已经有一个现有的解决方案可用于在解析时识别元素的位置,那么如果是这样,你能否指出我正确的方向......对不起,如果我在这里遗漏了一些明显的东西 【参考方案1】:

没有傻瓜证明方法。因为不同的浏览器会在不同的屏幕上呈现不同的效果。这是一个最适合使用在客户端浏览器上运行的 javascript 的过程。

您需要服务器位置的原因是什么?

实现它的几种方法(我想不到)...

1) 在后台生成 IE 或 firefox(或任何浏览器),使用 javascript 获取位置,然后将其传递给 php 脚本?

2)下载并编译网站库并编写一个php模块(插件)来处理这个?

3) 是否在客户端用javascript计算位置,并使用AJAX将位置传回服务器?

4) 重做网页,让我们不用关心位置?

【讨论】:

如果 Javascript 是唯一可靠的方法,那么您会推荐哪种方法能够自动模拟浏览器并运行 javascript 来提取数据,是否有这种可能性?我希望脚本在我的服务器上自动运行,而不必依赖我的物理浏览器来获取数据,那么有什么方法可以在服务器端自动模拟浏览器 嗯,javascript在浏览器中运行,页面渲染完成后,就可以获取位置了。但是,您需要考虑客户将使用的不同浏览器,因为不同的浏览器呈现不同的内容。 (著名的 IE7....) 取决于您运行的服务器。如果是windows并且你想使用IE,只需从PHP生成IE并让它渲染页面,然后获取位置。如果你想使用 chrome 或 safari,你可以考虑使用 webkit.net 库并在 .net 中编写程序来获取位置 如果是 linux,您可能需要研究一些浏览器如何实现自动化。因为在 windows 中你有 OLE 和 ActiveXs 但我对 linux 不太确定。 谢谢,会做一些研究来弄清楚,Linux 上的服务器 rus 所以需要找出如何使用这个操作系统自动化这个过程

以上是关于解析文档时是不是可以检测 HTML 元素的位置(页脚、侧边栏)?的主要内容,如果未能解决你的问题,请参考以下文章

解析时,jQuery 会忽略任何不是表格的内容,并且文档会删除表格标签

如何检测 html 元素是不是可以附加子节点?

从 beautifulsoup 元素中提取原始字符串位置

XMLDTDSchemadom4j解析

前端面试之Js基础

使用 Python 模块—— HTMLParser 解析 HTML 文档元素