0

SIMPLE HTML DOM を使用して Web サイトをスクレイピングしていますが、次のコードを取得しています...

$GameSummary

<dl class="ismSummary ismHomeSummary">
    <dt>Goals scored</dt>
    <dd><a class="ismViewProfile" href="#438">Gallas</a></dd>
    <dd><a class="ismViewProfile" href="#458">Defoe</a></dd>
    <dt>Assists</dt>
    <dd><a class="ismViewProfile" href="#443">Vertonghen</a></dd>
    <dd><a class="ismViewProfile" href="#447">Lennon</a></dd>
    <dt>Yellow cards</dt>
    <dd><a class="ismViewProfile" href="#438">Gallas</a></dd>
    <dd><a class="ismViewProfile" href="#439">Walker</a></dd>
    <dd><a class="ismViewProfile" href="#450">Huddlestone</a></dd>
    <dt>Saves</dt>
    <dd><a class="ismViewProfile" href="#433">Friedel</a> (3)</dd>
</dl>

各セクションを特定のセクションに分割しようとしています...次の情報を次の順序で取得しようとしています...

Heading1: Goals Scored
  Entry: Gallas
  Entry: Defoe
Heading2: Assists
  Entry: Vertongen
  Entry: Lennon
etc....

ヘッダーを取得できるコードは次のとおりです...

foreach ($GameSummary->find('dt') as $HeadingType)
  {
  echo $HeadingType;
  }

私にすべての見出しを与えます...そして各ヘッダーの内容を取得します..

foreach ($GameSummary->find('dd') as $PlayerNames)
  {
  echo $PlayerNames;
  }

私が疑問に思っているのは...どうすればこれらを異なるグループに分けることができますか? すべてのヘッダーとすべてのコンテンツを個別に取得できますが、各ヘッダーにコンテンツが含まれるように取得する方法がわかりません。

どのようにアイデアはありますか?それは十分に簡単なはずですが、私の脳はそれを理解できません。

ありがとう!

例: http://fantasypl.com/results.php

4

1 に答える 1

0

大まかに次のようになります。

   $i=1;
   foreach ($GameSummary->find('dl')->children() as $element)
    {
       if ($element->tag == "dt")  { echo "Heading$i: $element"; $i++; }
       if ($element->tag == "dd") echo "Entry: $element";

    }

[編集] 以下のコメントからの実際の作業コード:

    foreach ($GameSummary->children() as $test) 
     { 

        if ($test->tag == "dt") { echo "Heading$i: ".$test->innertext."<br>"; $i++;} 
        if ($test->tag == "dd") { echo "Player: ".$test->innertext."<br>";} 
      }
于 2012-10-31T05:43:04.463 に答える