我正在为一个丹麦葡萄酒网站制作一个webscraper。
但我在从中获取结果时遇到了一些问题。我认为问题出在Xpath部分,因为我从调试中可以看出它省略了一些字符串,但我不确定。
$title = $ScrapedPageXpath->query('*<h3>');
也可能是我的查询是错误的。
我不是一个熟练的程序员,这是我尝试做的第一件事,所以请在回复中记住这一点。
以下是我的代码:
<?php
function curlGet($url)
{
$chandle = curl_init();
curl_setopt($chandle, CURLOPT_URL, $url);
curl_setopt($chandle, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($chandle, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($chandle, CURLOPT_FOLLOWLOCATION, 5);
$curlResults = curl_exec($chandle);
curl_close($chandle);
return $curlResults;
}
$Winelist = array();
function returnXPathObject($item)
{
$xmlPageDom = new DomDocument();
@$xmlPageDom->loadHTML($item);
$xmlPageXPath = new DOMXPath($xmlPageDom);
return $xmlPageXPath;
}
$ScrapedPage = curlGet('http://www.vinhit.dk/shop/');
$ScrapedPageXpath = returnXPathObject($ScrapedPage);
$title = $ScrapedPageXpath->query('*<h3>');
if ($title->length > 0) {
$Winelist['title'] = $title->item(0)->nodeValue;
}
print_r($Winelist);
您的查询不是有效的XPath表达式。要获取所有<h3>
节点,查询应该是:
//h3
有关XPath:的进一步参考
- W3School:Xpath教程
- W3C XPath 1.0参考文档