我正在处理php中的脚本,该脚本从电子商务网站获取所有产品网址,现在我只使用函数get_file_contents()并在搜索关键字后使用预期项目网址的preg_match_all(),现在,我的问题是,我可以使用更直接,更有效的方式从网站存储所有这些链接并将它们放在我的数据库中吗?
答案 0 :(得分:0)
我最近为我的客户的项目创建了一个抓取系统。基本上这些是我遵循的步骤:
这是我使用的示例解析器代码。我希望它能帮助你完成整个过程:
$content = file_get_contents($url);
libxml_use_internal_errors(true);
$oDom = new DomDocument;
$oDom->validateOnParse = false;
$res = $oDom->loadHTML($content);
libxml_clear_errors();
$oDom->preserveWhiteSpace = false;
$oXpath = new DOMXPath($oDom);
$productNode = $oXpath->query('//div[@class="ulist span4"]');
if($productNode){
$productsList = array();
foreach($productNode as $p){
$this->oProduct = new Products();
$productURL = $oXpath->query('div[@class="ures"]/div[@class="ures-cell"]/a', $p)->item(0);
$this->oProduct->url = $this->base.'/'.$productURL->getAttribute('href');
$this->oProduct->category = $categoryID;
$this->oProduct->productPeek = $peek;
$titleNode = $oXpath->query('div[@class="ubilgialan span12"]/div[@class="span12 uadi"]/a/span', $p)->item(0);
$this->oProduct->title = trim($titleNode->nodeValue);
$priceNode = $oXpath->query('div[@class="ubilgialan span12"]/div[@class="span8 ufytalan"]/div[@class="ufyt"]/span[@class="divdiscountprice"]/span', $p)->item(0);
$this->oProduct->price = trim($priceNode->nodeValue);
$imageNode = $oXpath->query('div[@class="ures"]/div[@class="ures-cell"]/a/img', $p)->item(0);
$this->oProduct->image = $this->base."/".$imageNode->getAttribute('src');
$productsList[] = $this->oProduct;
}
if(count($productsList) > 0){
return $productsList;
}
}