Я работаю над сценарием в php, который берет все URL-адреса продуктов с сайта электронной коммерции, сейчас я просто использую функцию get_file_contents () и после поиска ключевого слова с помощью preg_match_all (), который ожидает элемент url, теперь мой вопрос: могу ли я использовать более прямой и эффективный способ хранить все эти ссылки с веб-сайта и помещать их в мою базу данных?
Я недавно создал систему сканирования для проекта моего клиента. В основном это шаги, которые я следовал:
Это пример кода парсера, который я использую. Я надеюсь, что это поможет вам в этом процессе:
$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;
}
}
Других решений пока нет …