У меня возникла задача спарсить товары с сайта, и я написал скрипт, состоящий из следующих этапов:
Парсинг количества страниц в категории;
Парсинг товаров с указанных страниц;
Парсинг цен и названий товаров на каждой странице товара.
Однако при запуске скрипт выполняется очень долго и в конце выдает ошибку:
Fatal error: Maximum execution time of 30 seconds exceeded in /var/www/parser/vendor/masterminds/html5/src/HTML5/Parser/DOMTreeBuilder.php on line 671
Можете ли вы подсказать решение, чтобы код сразу работал так, как нужно?
<?php
use Symfony\Component\BrowserKit\HttpBrowser;
use Symfony\Component\HttpClient\HttpClient;
class Agrostadion {
public function getParse() {
$paginate = 1;
$browser = new HttpBrowser(HttpClient::create());
$crawler = $browser->request('GET', "https://agrostadion.com/catalog/zasobi-zakhystu-roslyn/herbitsydy/");
$paginate = $crawler->filter(".module-pagination")->eq(0);
$paginate_array = explode(' ',$paginate->text());
foreach($paginate_array as $key => $value){
if(!is_numeric($value)){
unset($paginate_array[$key]);
}
}
$paginate_count = array_pop($paginate_array);
for($i=1; $i<=$paginate_count; $i++) {
$response = $browser->request('GET', 'https://agrostadion.com/catalog/zasobi-zakhystu-roslyn/?PAGEN_1='.$i);
$response->filter('.catalog_block div .catalog_item_wrapp .inner_wrap .item_info .item-title a')->each(function ($node) use (&$links) {
$links[] = $node->attr("href").'';
});
}
foreach($links as $link) {
$response = $browser->request('GET', 'https://agrostadion.com'.$link);
$response->filter('.topic .topic__heading')->each(function ($node) use (&$names) {
$names[] = $node->text().'';
});
}
dd($names);
}
}
?>