0

我正在尝试获取网页中 HTML 标记的一些属性。

<html>
<head>
  <title>test page</title>
</head>
<body>
  <div id="header" class="clearit" role="banner">
    <div id="headerWrapper">
      <ul id="primaryNav" role="navigation">
        <li id="musicNav" class="navItem">
          <a href="/music" class="nav-link">Music</a>
        </li>
        <li id="listenNav" class="navItem">
          <a href="/listen" class="nav-link">Radio</a>
        </li>
        <li id="eventsNav" class="navItem">
          <a href="/events" class="nav-link">Events</a>
        </li>
        <li id="chartsNav" class="navItem">
          <a href="/charts" class="nav-link">Charts</a>
        </li>
        <li id="communityNav" class="navItem">
          <a href="/community" class="nav-link">Community</a>
        </li>
        <li id="originalsNav" class="navItem">
          <a href="http://originals.last.fm" class="nav-link">Originals</a>
        </li>
      </ul>
    </div>
  </div>
</body>
</html>

例如,我需要实际的高度和宽度,#headerWrapper并将其与#musicNav我的 PHP 脚本中的值进行比较。由于 PHP 是服务器端的,因此我无法获取这些属性,因此我正在考虑附加 Javascript 代码来计算这些属性并将它们存储在 JSON 文件中,如下代码所示:

<script type="text/javascript">
document.ready(function() {
  var JSONObject= {
    "tagname":"headerWrapper",
    "height":$("#headerWrapper").height(),
    "width":$("#headerWrapper").width()
  },
  {
    "tagname":"musicNav",
    "height":$("#musicNav").height(),
    "width":$("#musicNav").width()
  }
  });
});  
</script>

然后我想在包含我的算法的 php 文件中阅读它,以从网页中提取视觉特征。所以我需要使用一些浏览器来渲染带有附加 Javascript 的网页。我正在使用 exec 将新文件发送到 Firefox,如下所示:

exec('"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "http://localhost/Autoextractor/test.html" 2> errors.txt');

并且 Firefox 在 taskmanager 中打开但不显示,页面不呈现,并且我附加的 Javascript 代码不执行

safe_mode=off - disabled_functions 从 php.ini 和执行时删除 exec("whoami"); 结果是我的用户(注意:我在管理员组中的用户),我确实尝试了wscript,但没有结果。

有谁知道它为什么不起作用,或者有另一种解决方案来获取 HTML 标签的尺寸?

4

2 回答 2

4

简单地运行浏览器不会让您从中读取任何数据,所以忘记使用system.

您可以使用Selenium Webdriver通过 PHP 控制浏览器,运行 JavaScript,然后返回结果。

当您编写真正的 JavaScript 时,您需要修复问题中包含的示例中出现的语法错误。

请记住,屏幕上元素的大小将取决于安装的字体、选择的字体大小、浏览器、窗口大小等因素。您可以获得系统上运行的浏览器的结果,但不能依赖这是一个普遍的结果。

于 2012-07-01T10:32:58.510 回答
0

“有另一种解决方案来获取 HTML 标签的维度吗?”

Firebug/Inspect 出了点问题,它会通过一些简单的操作为您提供渲染偏移量。

如果您想以编程方式在控制台中运行您的代码,尽管您仍然需要 firebug/Inspect 来找到正确的选择器(这确实消除了自动执行任何这些操作的能力)。尝试记录所有内容...好吧,听起来您正在尝试保留数据库...也许您应该设置一个。

这可能是一个问题,您需要添加更多上下文才能获得有用的响应。

于 2012-07-01T10:43:48.180 回答