【发布时间】:2014-07-27 06:06:47
【问题描述】:
我在尝试获得siteadvisor.com 评级时在第 18 行遇到错误。错误消息显示"PHP Fatal error: Call to a member function hasAttribute() on a non-object"。我已经包含了我用来获得siteadvisor.com 评级的 ull php 代码。
public function getSiteAdvisor($domain)
{
try
{
$callback_url = "http://www.siteadvisor.com/sites/" . $domain;
$curl_response = $this->curl->get($callback_url);
if ($curl_response->headers['Status-Code'] == "200") {
libxml_use_internal_errors(TRUE);
$this->dom_doc->loadHTML($curl_response);
libxml_use_internal_errors(FALSE);
$xpath = new DOMXPath($this->dom_doc);
$tmp = $xpath->query('/html/body//div[@id="siteVerdict"]//img')->item(0);
if ($tmp->hasAttribute('src')) {
$tmp = $tmp->getAttribute('src');
if (stripos($tmp, "green") !== false) {
$siteadvisor_rating = 1;
} elseif (stripos($tmp, "yellow") !== false) {
$siteadvisor_rating = 2;
} elseif (stripos($tmp, "red") !== false) {
$siteadvisor_rating = 3;
} else {
$siteadvisor_rating = 0;
}
} else {
$siteadvisor_rating = 0;
}
} else {
$siteadvisor_rating = 0;
}
$response = array(
'status' => 'success',
'data' => array(
'siteadvisor' => (int)$siteadvisor_rating
)
);
}
catch (Exception $e)
{
$response = array(
'status' => 'error',
'msg' => $e->getMessage()
);
}
return $response;
}
【问题讨论】:
-
来自 PHP 的 xpath::query() 手册:如果表达式格式错误或 contextnode 无效,则 DOMXPath::query() 返回 FALSE。
标签: php html xpath web-scraping domdocument