CURL/PHP - 尝试解析链接,调用未定义的方法 DOMDocument::query()


CURL/PHP - Trying to parse link giving Call to undefined method DOMDocument::query()

这是我的代码:

<?php
    $url = "http://www.sportsdirect.com/adidas-goletto-mens-astro-turf-trainers-263244?colcode=26324408";   
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSLVERSION, 3);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    $str = curl_exec($curl);  
    curl_close($curl);  

    libxml_use_internal_errors(true); 
    $doc = new DOMDocument();
    $doc->loadHTMLFile($str);
    $xpath = new DOMXpath($doc);
    $name  = $doc->query('//span[@id="ProductName"]')->item(0)->nodeValue;
    echo $name;
?>  

我正在尝试获取产品名称,但收到:

Fatal error: Call to undefined method DOMDocument::query() in /public_html/test.php on line 24

你能帮我解决我的问题并找到我的错误,因为我在这个问题上呆了几个小时?

我只想获取包含在span元素中的产品名称id产品名称。

提前感谢!

您可以使用 PHP 正则表达式获得所需的结果:

<?php
$url = "http://www.sportsdirect.com/adidas-goletto-mens-astro-turf-trainers-263244?colcode=26324408";   
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt($curl, CURLOPT_VERBOSE, true);
$str = curl_exec($curl);  
curl_close($curl);
preg_match_all("/id='"ProductName'"(.+?)>(.+?)</", $str, $str_out);
$name = $str_out[2][0];
echo $name;
?>

这适用于使用 preg_match_all() 提取产品名称。