request($method, $url); if (strstr($client->getResponse()->getHeaders()['content-type'][0], 'text/html')) { print str_pad('['.$level.']', $level*2, ' ', STR_PAD_LEFT).' '.$url."\n"; $crawler->filterXPath($filters[$level])->each(function ($node) use ($method, $filters, $level) { $new_url = $node->link()->getUri(); $new_level = $level+1; if ($new_level < count($filters)) { self::scrape($method, $new_url, $filters, $new_level, $download_dir); } }); } else { $content_disposition = $client->getResponse()->getHeaders()['content-disposition'][0]; $filename = time(); if (preg_match('/filename="([^"]+)"/', $content_disposition, $m)) { $filename = $m[1]; } file_put_contents( $download_dir.'/'.$filename, $client->getResponse()->getContent() ); } } }