用于提取链接的Xpath

时间:2013-01-25 11:16:37

标签: php xpath web-scraping

我为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 ......

请帮助

1 个答案:

答案 0 :(得分:1)

您需要遍历结果而不是仅仅取第一项:

$items = $xpath2->query("//div[@class='modelImage']/a/@href");
$links = array();
foreach($items as $item) {
    $links[] = $item->textContent;
}
$data['newLinks'] = implode(', ', $links);