0

そこで、私はPHP Simple HTML DOM Parserを使用しており、この Web ページ (http://www.transfermarkt.co.uk/en/chinese-super-league/startseite/wettbewerb_CSL) からトップ ゴールスコアラーのテーブル リストを取得しようとしています。 html (トップ 5 です...)

テーブルTop Goal Scorersを解析しようとしていますが、その ID は"spieler"です。そうすることで、テーブルの各行を取得し、それらを自分でリストしたいと考えています。問題は...名前/クラブ<table>の下に...画像、名前、クラブ名をWebページに表示しやすくするための新しいものがあります。

DOM を理解しようとしているので、何を選択して適切なプレーヤー名、クラブ名、および目標を取得する必要があるかを確認できます。ありがとう。

これが私がこれまでに持っているものです:

<textarea id='txt_out'>
<?php
echo "Player | Team | Goals\n:--|:--|:--:\n";

$url = "http://www.transfermarkt.co.uk/en/chinese-super-league/startseite/wettbewerb_CSL.html";
$html = file_get_html($url);

foreach($html->find('#spieler') as $row) {

  if ($i > 0) {
   $player = $row->find('table tr',3)->plaintext;
        echo $player . "|TEST TEAM|0";
    }
   $i++;
}
?>
</textarea>

これechoは空白を返します。

<textarea id="txt_out">Player | Team | Goals
:--|:--|:--:
</textarea>
4

2 に答える 2

2

ほら (属性を少し操作して、希望の出力を得る必要があります): このソリューションでは、すべての tds を取得し、内部テーブルが含まれていないことを確認した後、それらのプレーンテキストを取得します。

$output = '<table border="1">
                <tr>
                    <td>#</td>
                    <td>Player</td>
                    <td>Team</td>
                    <td>goals-1</td>
                    <td>goals-2</td>
                    <td>goals-3</td>
                    <td>points</td>
                </tr>
            ';

$url = "http://www.transfermarkt.co.uk/en/chinese-super-league/startseite/wettbewerb_CSL.html";
$html = file_get_html($url);

$tbl = $html->find('#spieler',0);

$trs = $tbl->find('tr[class=dunkel],tr[class=hell]');

foreach($trs as $tr){
    $output .= '<tr>';
    $tds = $tr->find('td');
    foreach($tds as $td){
        $inner_table = $td->find('table',0);
        if(!$inner_table){  
            $text = trim($td->plaintext);
            if($text != ''){
                $output .= '<td>' . $td->plaintext . '</td>';
            }
        }  
    }
    $output .= '</tr>';
}

$output .= '</table>';

echo($output);
于 2013-05-05T11:34:58.940 に答える
0

DOMNodelist->item() を使用します (item() は引数としてインデックスを期待します。インデックスはゼロから始まるため、1 は 2 番目のテーブルを返します)

 $table = $dom->getElementsByTagName('table')->item(1);
于 2013-05-05T10:53:02.130 に答える