извлечение внутреннего текста из определенного div - PullRequest
2 голосов
/ 04 марта 2012

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

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

Неустранимая ошибка: максимальное время выполнения 30 секунд превышено в E: \ Installations \ xampp \ htdocs \ wp \ simple_html_dom.php в строке 127

Вот код для скрипта,

Я хочу, чтобы мой скрипт открывал все подстраницы (/ txt / any number) внутри 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;      
?>

Ответы [ 2 ]

2 голосов
/ 04 марта 2012

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

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

$html = file_get_html($url);
$displaybody = $html->find('div[id=displaybody]', 0)->plaintext;
0 голосов
/ 04 марта 2012

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

ini_set('max_execution_time', 0);

Это снимет ограничение по времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...