0

Webページで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>

たとえば、PHPスクリプトの実際の高さと幅が必要であり、#headerWrapperそれと比較します。#musicNavPHPはサーバー側であるため、これらの属性を取得できないため、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>

次に、Webページから視覚的特徴を抽出するためのアルゴリズムを含むphpファイルでそれを読みたいと思います。そのため、ブラウザを使用してJavascriptを追加したWebページをレンダリングする必要があります。次のように、execを使用して新しいファイルをFirefoxに送信しています。

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

また、Firefoxはタスクマネージャーで開きますが、表示されず、ページはレンダリングされず、追加されたJavascriptコードは実行されません

safe_mode = off-php.iniから、exec( "whoami");の実行時にdisabled_functionsが削除されました。結果は私のユーザー(注:管理者グループの私のユーザー)であり、結果なしでwscriptを試しました。

なぜそれが機能しないのか、またはHTMLタグのサイズを取得するための別の解決策があるのか​​誰かが知っていますか?

4

2 に答える 2

4

ブラウザを実行するだけでは、ブラウザからデータを読み戻すことはできないため、の使用は忘れてくださいsystem

Selenium Webdriverを使用して、PHPでブラウザーを制御し、JavaScriptを実行して、結果を返すことができます。

実際のJavaScriptを作成するときは、質問に含めた例に表示される構文エラーを修正する必要があります。

画面上の要素のサイズは、インストールされているフォント、選択したフォントサイズ、ブラウザ、ウィンドウサイズなどの要因によって異なることに注意してください。システムで実行されているブラウザの結果を取得できますが、依存することはできません。それは普遍的な結果である。

于 2012-07-01T10:32:58.510 に答える
0

「HTMLタグのGetディメンションを取得するための別のソリューションがありますか?」

Firebug / Inspectに問題があります。これにより、いくつかの簡単な操作でレンダリングされたオフセットが得られます。

プログラムでコードを実行する場合は、コンソールでコードを実行します。ただし、適切なセレクターを見つけるには、firebug / Inspectが必要です(これにより、これを自動的に実行する機能が実際に不要になります)。すべてをログに記録しようとしています...まあ、データベースを保持しようとしているようです...おそらくデータベースを設定する必要があります。

これは、有用な応答を得るためにコンテキストを追加する必要があるという問題である可能性があります。

于 2012-07-01T10:43:48.180 に答える