0

automotoサイト用のスクレーパーを作成し、最初にすべてのメーカーを取得し、その後、各メーカーのモデルのすべてのリンクを取得しますが、以下のコードを使用すると、リストの最初のモデルのみを取得します。なんで?

<?php

$dom = new DOMDocument();
@$dom->loadHTMLFile('http://www.auto-types.com');
$xpath = new DOMXPath($dom);
$entries = $xpath->query("//li[@class='clearfix_center']/a/@href");
$output = array();
foreach($entries as $e) {  
  $dom2 = new DOMDocument();
  @$dom2->loadHTMLFile('http://www.auto-types.com' . $e->textContent);
  $xpath2 = new DOMXPath($dom2);
  $data = array();
  $data['newLinks'] = trim($xpath2->query("//div[@class='modelImage']/a/@href")->item(0)->textContent);

  $output[] = $data;
}

echo '<pre>' . print_r($output, true) . '</pre>';

?>

だから私は取得する必要があります:メルセデス/ 100、メルセデス/ 200、メルセデス/300しかし今私のスクリプトでは最初のリンクだけを取得するのでメルセデス/100 ...

助けてください

4

1 に答える 1

1

最初の項目を取得するだけでなく、結果を繰り返す必要があります。

$items = $xpath2->query("//div[@class='modelImage']/a/@href");
$links = array();
foreach($items as $item) {
    $links[] = $item->textContent;
}
$data['newLinks'] = implode(', ', $links);
于 2013-01-25T11:22:02.790 に答える