【问题标题】:Unable to get all the span values无法获取所有跨度值
【发布时间】:2015-07-01 11:45:36
【问题描述】:
$url = "http://www.amazon.in/gp/product/B00UMSAWOY/";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
curl_exec($ch);
curl_close($ch);

preg_match_all("/<span>(.*)<\/span>/", $result, $matches);
print_r($matches);
foreach($matches[1] as $val)
{
    echo $val."<br>";
}

如果我运行这个查询,我得到的结果是996-2015, Amazon.com, Inc. or its affiliates。但我需要链接中可用的所有跨度值。我要打印的是产品名称和价格。谁能帮忙解决这个问题?

【问题讨论】:

  • $dom = new DOMDocument(); $dom->loadHTML($html); $selector = new DOMXPath($dom); $results = $selector->query('//span'); foreach($results as $node) { echo $node->nodeValue . PHP_EOL; } 对不起@viral 你的回答很好,它的工作。你能帮我得到产品名称和价格吗

标签: php curl preg-match preg-match-all


【解决方案1】:
 <?php
 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.amazon.in/gp/product/B00UMSAWOY/');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$html = curl_exec($ch);
curl_close($ch);    

 $dom = new DOMDocument;
 @$dom->loadHTML($html);
 $xpath = new DOMXPath($dom);
$searchNode = $dom->getElementsByTagName( "span" ); 
 foreach ($dom->getElementsByTagName('span') as $tag)                  
{
//echo $tag->getAttribute('id');
if($tag->getAttribute('id')=='productTitle')
{
    echo $tag1=$tag->nodeValue . '<br/>';
}
if($tag->getAttribute('id')=='priceblock_saleprice')
{
    echo $tag1=$tag->nodeValue . '<br/>';
}
}
?>

我已经找到了解决方案的朋友。感谢您的帮助

【讨论】:

    【解决方案2】:

    以下代码将解决您的问题

    preg_match_all('/<span>.*?<\/span>/is', $result, $matches);
    

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 2021-07-14
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多