【问题标题】:Render HTML pages in PHP or Java用 PHP 或 Java 渲染 HTML 页面
【发布时间】:2012-06-28 14:18:46
【问题描述】:

我正在尝试获取网页中 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 的实际高度和宽度,并将其与我的 PHP 程序中的 #musicNav 进行比较,因为 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 文件读取它,其中包含我的算法,从网页中提取视觉特征。

但我的问题是我需要使用某些浏览器或 PHP 或 java 中的渲染引擎来渲染带有附加 javascript 的网页……所以有人有类似的东西吗?我的方法是正确的还是有更好的解决方案?

【问题讨论】:

  • 我不认为,这种方法根本不是一个好主意——因为您永远不知道浏览器为您的元素呈现的高度,特别是如果它是一个动态值。如果它是一个固定值(例如高度:400px),也许最好将其设置为 PHP 变量并将其作为内联样式放入您的 html 中。
  • @maksimov 我不明白你的意思@acme 这不是问题,因为我不需要为所有屏幕尺寸固定元素的尺寸我只需要得到一个比率在固定分辨率上呈现的元素大小之间,例如“1366X766”
  • @FarokOjil 我来到这里是因为这个问题被标记为 [java] 并且标题中有“Java”。然而,它似乎与 Java 完全无关,而是 PHP 和 JavaScript。否则,当您将 Java 与 PHP 一起提及时,您需要解释一下您的意思。
  • 我的意思是java“用java写的渲染引擎”

标签: php javascript rendering


【解决方案1】:

如果你想渲染一个给定 url 的网页并且需要一个 api 来遍历渲染的 dom Phantomjs 及其 apiexamples 将为您提供帮助。查看openrender

PhantomJS 是一个带有 JavaScript API 的无头 WebKit。它具有快速和 对各种 Web 标准的原生支持:DOM 处理、CSS 选择器、 JSON、Canvas 和 SVG。

【讨论】:

    【解决方案2】:

    如果我对您的理解正确,您需要一种从 Java 应用程序控制浏览器的方法。 This 似乎是相关的。 您可能还需要考虑的事项 --

    1. 让应用了解您的浏览器(二进制或其他)。
    2. 从主机上的多个可用浏览器中进行选择。
    3. 考虑跨平台支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      相关资源
      最近更新 更多