У меня простая задача. Получите все статьи со страницы, а также получите все фотографии для каждой статьи.PHP Simple HTML DOM Parser: получить все сообщения
Сегодня я решил использовать PHP Simple HTML DOM Parse
В качестве примера, я использовал следующий код:
<?php
include("simple_html_dom.php");
$sitesToCheck = array(
array(
'url' => 'http://googleblog.blogspot.ru/',
'search_element' => 'h2.title a',
'get_element' => 'div.post-content'
),
array(
// 'url' => '', // Site address with a list of of articles
// 'search_element' => '', // Link of Article on the site
// 'get_element' => '' // desired content
)
);
$s = microtime(true);
foreach($sitesToCheck as $site)
{
$html = file_get_html($site['url']);
foreach($html->find($site['search_element']) as $link)
{
$content = '';
$savePath = 'cachedPages/'.md5($site['url']).'/';
$fileName = md5($link->href);
if (! file_exists($savePath.$fileName))
{
$post_for_scan = file_get_html($link->href);
foreach($post_for_scan->find($site["get_element"]) as $element)
{
$content .= $element->plaintext . PHP_EOL;
}
if (! file_exists($savePath) && ! mkdir($savePath, 0, true))
{
die('Unable to create directory ...');
}
file_put_contents($savePath.$fileName, $content);
}
}
}
$e = microtime(true);
echo $e-$s;
я попытаюсь получить только статьи без картинок. Но я получаю ответ от сервера
«Максимальное время исполнения 120 секунд превышено»
.
Пожалуйста, объясните мне, что я делаю неправильно ...
Скажите, есть ли другой способ, чтобы получить все статьи и все фотографии для каждой статьи по конкретному адресу?
Так много для "простой" части, а. :) Серьезно, однако, в прошлый раз, когда я проверил его (несколько месяцев назад), simple_html_dom все еще был кучей паров. DOMDocument + DOMXPath занял около 1/5 места и времени. Буквально. Я избавился от использования памяти и времени выполнения на 80%, избавившись от нее. – cHao
, вы не должны слишком полагаться на это, но если вы заранее знаете, что процесс займет много времени, попробуйте 'set_time_limit (0)', однако использовать его повсюду не рекомендуется. Это предотвратит убийство вашего компьютера, если оно превысит максимальное время выполнения (120 с в вашем случае), и оно будет работать до тех пор, пока оно не завершится. Проблема в том, что ... если вы допустили ошибку в своей программе, которая заставляет работать вечно, ваша программа будет сидеть на сервере, потребляющем ресурсы, до тех пор, пока не будет предпринято ручное действие. – ILikeTacos
Просто так я не выгляжу, как бешеный ненавистник, есть одна вещь, которая может быть полезной для simple_html_dom. Если у вас есть HTML, который так плохо искажен, что он больше не похож на HTML, DOMDocument может не справиться с этим хорошо. Такой lib, как simple_html_dom *, может быть лучше с таким мусором, поскольку он предназначен для работы с дурацкой разметкой. Но редко приходится разбирать документ, который так ужасно нарушен, что DOMDocument не может его обработать. По крайней мере, мне никогда не приходилось иметь дело с этим. – cHao