@Thegaar

Curl и тяжёлое тело как получить?

Ребят пробую спарсить страницу с 1000+ товарами. cURL падает с ошибкой

Proc with args = ['php', 'parser.php', 'https://site.ru/products'] exited with code = 255
stderr = PHP Warning:  Module 'curl' already loaded in Unknown on line 0
PHP Fatal error:  Call to a member function find() on a non-object in /data/Projects/website/app/parsers/parser.php on line 42
``


Вот код парсера

function parse_site($url, $cookie){

		$ch = curl_init($url);
		curl_setopt($ch, CURLOPT_HEADER, 0); 
		curl_setopt($ch, CURLOPT_NOBODY, 0); 
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 900);
		curl_setopt($ch, CURLOPT_TIMEOUT, 900);
		curl_setopt($ch, CURLOPT_COOKIE, $cookie);
		$curl_body = curl_exec($ch);  
		curl_close($ch);
	
		$html_body = str_get_html($curl_body);

		if(!$html_body->find(CONST_ITEMS_TAG))               //42 строчка
			return getErrorMsg(1, CONST_ITEMS_TAG);     //43 строчка
		
		foreach($html_body->find(CONST_ITEMS_TAG) as $items){
                   .........парсим
                }
             }


Для парсинга тела юзаю simple html dom. В чём косяк? Я подозреваю cURL не может тело нормально получить... ибо если товаров на странице менее 100 - всё нормально.
  • Вопрос задан
  • 669 просмотров
Пригласить эксперта
Ответы на вопрос 4
AloneCoder
@AloneCoder
[object Object]
Ну посмотри что у тебя там возвращается в $curl_body
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
поставь PHP max_execution_time на те же 900-1000

поставь заголовки gz, чтобы передавалась в сжатом виде (не всегда прокатывает)
Ответ написан
@Everal
добавь для пыхи озу побольше )
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
simple html dom нереально тугой, ставь время выполнения скрипта побольше, а лучше выкинь это г*вно и пользуйся регулярками. Возможно проблема в скорости отдачи с сервера, но для начала просто запусти скрипт без simple html dom. Для начала я бы просто сделал парсинг в файлы на локальном хосте и парсил бы уже их локальными скриптами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы