1

いくつかのtrを持つテーブルを含むページをスクレイピングしています。すべてのtrの中に4つのtdがあり、これらのtdの最初のtdからデータを取得したいと思います。以下は私がこれまでに試したコードですが、すべてのtdを取得します。どうすれば私が望むことを達成できますか?

...
$html = new simple_html_dom();
$html = file_get_html($url);

foreach($html->find('table tr') as $row) {
    foreach($row->find('td', 0) as $cell) {
        echo $cell;
    }
}
4

2 に答える 2

2

foreach実際には各要素内の1つの要素にのみ作用することを意味するのに、なぜ2番目を使用しているのかを考えてくださいrow

$html = new simple_html_dom();
$html = file_get_html($url);

foreach($html->find('table tr') as $row) {
    $cell = $row->find('td', 0);
    echo $cell;
}
于 2012-12-29T11:06:14.753 に答える
1

単純なhtmldomは糞です。組み込みのdom関数とxpathを使用する方が簡単です。

$dom = new DOMDocument();
@$dom->loadHTMLFile($url);
$xpath = new DOMXPath($dom);

foreach($xpath->query('//td[1]') as $td){
  echo $td->nodeValue;
}

そうは言っても、私はおそらくまだphpqueryを使用したいと思います

于 2012-12-29T12:39:18.673 に答える