Парсер картинок. Нужна помощь.

12
bananamen
На сайте с 07.07.2010
Offline
107
1243

Скрипт должен парсить картинки с Я картинок.

Есть файл q.txt, куда вводим текст запроса по которому парсить. Код ниже.

<?php

set_time_limit(15);
$q = file("q.txt");
$pages = 200;
$ch = curl_init();
$num = 0;
foreach ($q as $query)
{
for ($i = 0; $i <= $pages; $i++)
{
curl_setopt($ch, CURLOPT_URL, "http://images.yandex.ru/yandsearch?p={$i}&ed=1&text={$query}&nl=1&stype=image");
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
$result = str_replace("&amp;", "&", $result);
preg_match_all('#a href\="(.*?)" id="#', $result, $out);
foreach ($out[1] as $iq)
{
curl_setopt($ch, CURLOPT_URL, "http://images.yandex.ru" . $iq);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.7)');
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
if (preg_match('#tabindex="2" href="(.*?)" onmousedown="#', $result, $im))
{
$img = file_get_contents($im[1]);
file_put_contents("img/$num.jpg", $img);
$num++;
}
}
}

}
?>

Выдается ошибка

Fatal error: Maximum execution time of 15 seconds exceeded in U:\home\localhost\ on line 15

Буду благодарен за подсказку, почему не работает.

Создание, ведение, настройка Ваших контекстных рекламных кампаний (/ru/forum/953556)
firefox19
На сайте с 05.11.2009
Offline
34
#1

дело в

set_time_limit(15);

поставьте хотя бы 50, а для верности еще:

ini_set("max_execution_time", "50");
Ваши идеи - наша работа (http://yaweb.ru) Продам Сайт агентства недвижимости (/ru/forum/561489)
bananamen
На сайте с 07.07.2010
Offline
107
#2

Спасибо, но не помогло не то ни другое.

[Удален]
#3

Ставьте еще больше.

Dub Rat
На сайте с 01.03.2009
Offline
87
#4

возможно

set_time_limit (0);

или в .htaccess

php_flag max_execution_time 0

мне помогало =)

поскольку парсер ваш может работать непонятно какое кол-во времени (200 страниц всё же), то лучше вообще убрать ограничение на выполнение...но смотрите чтобы сервер не лёг =))

p.s. я нуб если что.

bananamen
На сайте с 07.07.2010
Offline
107
#5
So1:
Ставьте еще больше.

ставил 1000 тоже самое. Вообще ничего не парсится, ни в каком случае.

bananamen добавил 20.08.2010 в 14:46

Dub Rat, спасибо, буду пробовать. -> C 0 тоже не работает.

bananamen добавил 20.08.2010 в 14:52

Забыл сказать запускаю на денвере.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#6

Дыг может проблема в парсере, если он ничего не парсит то :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
bananamen
На сайте с 07.07.2010
Offline
107
#7
LEOnidUKG:
Дыг может проблема в парсере, если он ничего не парсит то :)

Не ну это вполне вероятно. Заявлялся как рабочий. предвидя вопрос, с человеком чей парсер не могу связаться.

D
На сайте с 09.07.2009
Offline
79
#8
bananamen:
ставил 1000 тоже самое. Вообще ничего не парсится, ни в каком случае.

Какая ошибка?

bananamen
На сайте с 07.07.2010
Offline
107
#9
digwnews:
Какая ошибка?

Та же самая


Fatal error: Maximum execution time of 1000 seconds exceeded in U:\home\localhost\ on line 15
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#10
digwnews:
Какая ошибка?

Да какая разница, какая ошибка. За это время он должен был хоть что-то напарсить, это значит парсер где-то зацикливается и ничего не делает.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий