2012-03-04 2 views
2

У меня возникли проблемы с получением контента с вебом-страницы, на самом деле я хотел бы принести все внутренний текст от имени сНа displaybodyизвлечения внутреннего текста из определенного DIV

но мой код не кажется, работает, его является извлечение всего содержимого страницы, а не извлечения содержимого из displaybody DIV и после 4 страницы успешно принес я получаю сообщение об ошибке,

Fatal error: Maximum execution time of 30 seconds exceeded in E:\Installations\xampp\htdocs\wp\simple_html_dom.php on line 127

Вот код сценария,

Я хочу, чтобы мой сценарийоткрыть все подстраницы (/ TXT/любое число) внутри URL, указанный в коде и принес содержимое из своего конкретного DIV (displaybody)

<?php 

    $request_url ='http://www.zedge.net/txts/4519/200-3-1/'; 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $request_url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($ch); 

    $regex='/href=\"\/txt\/[0-9].*/'; 
    preg_match_all($regex,$result,$parts); 

    foreach($parts[0] as $link){ 
     $url = 'http://zedge.net' . str_replace ("href=\"",'',$link); 
     echo file_get_html($url)->plaintext; 
     echo "<br /><br/ ><br />"; 
    } 

    curl_close($ch);  
    echo $html->find('displaybody', 0)->innertext;  
?> 
+0

Каково утверждение на линии 127? –

+1

это стандартный файл html dom по умолчанию, и это не главный вопрос, который я задаю, btw оператор в строке 127 есть функция __destruct() { $ this-> clear(); } –

ответ

2

ошибка означает, что ваш скрипт занимает слишком много времени, чтобы выполнить , поэтому он выключен. Если выборка страниц занимает много времени, и это не проблема, вы можете отключить или увеличить макс. время выполнения с set_time_limit(). Также возможно, что ошибка приводит к тому, что ваш скрипт слишком долго застревает на одной части, если вы подозреваете, что это так, вы должны измерить время в разных частях вашего скрипта, чтобы увидеть, что вызывает зависание скрипта.

Что касается вашей другой проблемы, вы хотите получить содержимое div#displaybody со всех страниц? Предполагая, что извлечение URL уже работает, я полагаю, вы могли бы сделать это, делая это внутри цикла foreach:

$html = file_get_html($url); 
$displaybody = $html->find('div[id=displaybody]', 0)->plaintext; 
+0

thankyou полезно :) Кстати, вы не читали полный вопрос, я думаю, у меня две части вопроса: –

+0

@Effected Прошу прощения, слишком быстро прочитайте вопрос. Я обновил свой ответ с примером для получения div '# displaybody'. –

-1

Вы можете установить max_execution_time в 0

ini_set('max_execution_time', 0); 

это будет снять ограничение по времени.

+0

вы не ответили на главный вопрос:/ –

+0

Это не то, что он попросил –

Смежные вопросы