<?php KDGLoader::loadEntityClass('Product'); KDGLoader::loadModelClass('ProductModel'); KDGLoader::loadModelClass('CategoryModel'); KDGLoader::loadLibraryClass('parsers/NewhtfProductsListParser'); class NewhtfCollectProductsCrawler extends Crawler { protected function crawl() { $categories = CategoryModel::findAllMain(); foreach ($categories as $category) { $html = $this->requestProductsListPage($category->url); if ($html) { $this->parseProductsList($html, $category); } } } protected function requestProductsListPage($url) { $this->sendBuffered('category: ' . $url); return $this->makeRequest($url, false, false, false); } protected function parseProductsList($html, $category) { $parser = new NewhtfProductsListParser($html); foreach ($parser->products_list as $data) { $entity = ProductModel::findOneByUrl($data['url']); if (!$entity) { $entity = new Product(); }
<?php KDGLoader::loadEntityClass('Product'); KDGLoader::loadModelClass('ProductModel'); KDGLoader::loadLibraryClass('parsers/NewhtfUpdateProductParser'); class NewhtfUpdateProductsCrawler extends Crawler { protected function crawl() { $products = ProductModel::findAll(); foreach ($products as $product) { sleep(0.2); $html = $this->requestProductPage($product->url); if ($html) { $this->parseProduct($html, $product); } } } protected function requestProductPage($url) { $this->sendBuffered('[product url]: ' . $url); return $this->makeRequest($url, false, false, false); } protected function parseProduct($html, $product) { new NewhtfUpdateProductParser($html, $product); } }
<?php KDGLoader::loadEntityClass('Product'); KDGLoader::loadEntityClass('ProductProperty'); KDGLoader::loadEntityClass('ProductToProperty'); KDGLoader::loadModelClass('PropertyModel'); KDGLoader::loadEntityClass('ProductImage'); KDGLoader::loadModelClass('ProductImageModel'); class NewhtfUpdateProductParser extends KDGParser { protected $product = null; public function __construct($response, $product) { $this->product = $product; parent::__construct($response); } protected function parseDataObject() { } protected function hasDataObject() { return true; } protected function parseTitle() { return $this->getResponseObject()->query('//h1')->item(0)->nodeValue; } protected function parsePrice() { $items = $this->getResponseObject()->query('//span[@id="ys_top_price"]/span[@class="allSumMain"]'); if ($items->length > 0) {
KDGLoader::loadEntityClass('Developer'); KDGLoader::loadModelClass('DeveloperModel'); KDGLoader::loadEntityClass('Publisher'); KDGLoader::loadModelClass('PublisherModel'); KDGLoader::loadEntityClass('Content'); KDGLoader::loadModelClass('ContentModel'); KDGLoader::loadEntityClass('Genre'); KDGLoader::loadModelClass('GenreModel'); KDGLoader::loadEntityClass('ContentToGenre'); KDGLoader::loadModelClass('ContentToGenreModel'); KDGLoader::loadEntityClass('Feature'); KDGLoader::loadModelClass('FeatureModel'); KDGLoader::loadEntityClass('ContentToFeature'); KDGLoader::loadModelClass('ContentToFeatureModel'); KDGLoader::loadModelClass('CategoryModel'); KDGLoader::loadModelClass('ContentToCategoryModel'); class XboxOneDLCContentDetailsPageParser extends KDGParser { protected $RawItem = null; protected $content_object = null; public function __construct($response, $content_object) { $this->content_object = $content_object; parent::__construct($response); } protected function hasDataObject() { return true; } protected function parseValue($val, $pattern) {