CURL / PHP - 尝试解析HTML DOM Element但收到错误

时间:2016-03-09 18:32:18

标签: php curl domdocument

这是我的代码:

<?php
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    $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  = $xpath->query('//span[@id="ProductName"]')->item(0)->nodeValue;

    echo $name;

?>  

我正在尝试解析放置在元素<span id="ProductName">TEXT here</span>中的文本但我收到错误:

  

注意:尝试获取非对象的属性   第28行/home/sportsdi/public_html/test.php

你能否告诉我我的错误在哪里,我被困在这几个小时? 如何获取此元素中的文本?

提前致谢!

1 个答案:

答案 0 :(得分:1)

$str是一个字符串,而不是文件。

使用:

$doc->loadHTML( $str );

而不是:

$doc->loadHTMLFile( $str );

根据您的代码,->loadHTMLFile()失败,因此基于DOMXpath的{​​{1}}初始化失败。