예제 #1
0
 public function process()
 {
     $products = array();
     //fetch initial scrape from sainsburys
     $response = $this->client->fetch($this->url);
     $file = '/tmp/people.txt';
     file_put_contents($file, $response);
     $this->client->close();
     $elements = $this->parser->parse($response);
     if ($elements->length > 0) {
         $index = 0;
         foreach ($elements as $element) {
             //link
             foreach ($element->getElementsByTagName('a') as $link) {
                 $this->intializeClient();
                 $linkPage = $this->client->fetch($link->getAttribute('href'));
                 $linkSize = round(mb_strlen($linkPage, '8bit') / 1024) . "kb";
                 $this->client->close();
             }
             //get the node values
             $nodeItems = array();
             foreach (explode("\n", $element->nodeValue) as $nodeItem) {
                 if (!empty(trim($nodeItem))) {
                     $nodeItems[] = trim($nodeItem);
                 }
             }
             $products[$index]['title'] = $nodeItems[0];
             $products[$index]['size'] = $linkSize;
             $price = preg_replace('/[a-z\\/]/i', '', $nodeItems[2]);
             $price = substr($price, 2, strlen($price));
             $products[$index]['unit_price'] = $price;
             $products[$index]['description'] = $nodeItems[3];
             $index++;
         }
     }
     return array('results' => $products, 'total' => $this->getPriceTotal($products));
 }