这是我的代码:
<?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
你能否告诉我我的错误在哪里,我被困在这几个小时? 如何获取此元素中的文本?
提前致谢!
答案 0 :(得分:1)
$str
是一个字符串,而不是文件。
使用:
$doc->loadHTML( $str );
而不是:
$doc->loadHTMLFile( $str );
根据您的代码,->loadHTMLFile()
失败,因此基于DOMXpath
的{{1}}初始化失败。