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)); }