Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 14.02.2014, 10:46   #1
Feelnoobskill
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 13
Восклицание Парсинг большого количества страниц сайта

Всем привет!
Возникли трудности с парсингом. Идея такова, парсер заходит на сайт, собирает все категории с меню сайта, потом проходит по каждой категории и качает картинки. Ну это в идеале...На сайте где работает парсинг банят, т.е. много запросов не пошлешь, использовал curl и proxy.
Проблема заключается в том, что при обработке всех категорий ( порядка 30 ссылок) браузер может прервать соединение с сервером. Что это может быть и как это обойти?
Другая фишка, хоть я и использовал proxy но бан всё равно получаю, может это сервер банят?!
Спасибо большое за внимание!
Feelnoobskill вне форума Ответить с цитированием
Старый 14.02.2014, 11:27   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
@ini_set('max_execution_time', 0);
Кольша вне форума Ответить с цитированием
Старый 14.02.2014, 11:29   #3
Feelnoobskill
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 13
По умолчанию

Я устанавливал set_time_limit() но не помогло
Feelnoobskill вне форума Ответить с цитированием
Старый 14.02.2014, 13:05   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 14,968
По умолчанию

В настройках Apache надо отключить лимит времени.
Но по нормальному надо за один раз парсить одну ссылку, далее выдавать в браузер редирект на запуск парсинга следующей. А если сделать через Ajax, то можно даже в браузере динамически отображать результат. При желании тем же Ajax легко реализуется многопоточный парсер, который одновременно парсит, скажем, все 30 страниц.
Arigato вне форума Ответить с цитированием
Старый 14.02.2014, 13:35   #5
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
В настройках Apache надо отключить лимит времени.
Но по нормальному надо за один раз парсить одну ссылку, далее выдавать в браузер редирект на запуск парсинга следующей. А если сделать через Ajax, то можно даже в браузере динамически отображать результат. При желании тем же Ajax легко реализуется многопоточный парсер, который одновременно парсит, скажем, все 30 страниц.
зачем редирект, js + ajax + callback
получить список категорий, и слать ajax запрос на получение картинок
и так пока не пройдем весь список
CodeNOT вне форума Ответить с цитированием
Старый 14.02.2014, 13:43   #6
Tyoma5891
Пользователь
 
Регистрация: 16.08.2013
Сообщений: 54
По умолчанию

Цитата:
Сообщение от CodeNOT Посмотреть сообщение
зачем редирект, js + ajax + callback
получить список категорий, и слать ajax запрос на получение картинок
и так пока не пройдем весь список
А зачем вообще в браузер что-то посылать при этом?
Tyoma5891 вне форума Ответить с цитированием
Старый 14.02.2014, 13:52   #7
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Цитата:
Сообщение от Tyoma5891 Посмотреть сообщение
А зачем вообще в браузер что-то посылать при этом?
например интерактивность.

Более того, если даже парсим url регулярка, и обходим циклом, то послать запрос следующий на получение картинок мы не сможем послать до тех пор, пока не выполниться предыдущий.

С js можем послать 3-4-5 запросов, которые будут обрабатываться
CodeNOT вне форума Ответить с цитированием
Старый 14.02.2014, 14:03   #8
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

CodeNOT в php есть многопоточный curl, еще можно сделать многопоточность с помощью сокетов.
Кольша вне форума Ответить с цитированием
Старый 14.02.2014, 14:19   #9
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
CodeNOT в php есть многопоточный curl, еще можно сделать многопоточность с помощью сокетов.
что касается сокетов, то да

А про curl вы имеет в виду функцию:
Код:
curl_multi_add_handle
CodeNOT вне форума Ответить с цитированием
Старый 14.02.2014, 14:25   #10
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Вроде ее, я точно не помню.
Кольша вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранение большого количества данных Jtt Общие вопросы .NET 1 28.11.2013 17:13
Архивация большого количества файлов 88ra Microsoft Office Excel 3 22.09.2012 15:20
Добавление большого количества картинок в примечания Олег83 Microsoft Office Excel 0 30.01.2012 14:43
Создание большого количества потоков Crystallon Общие вопросы Delphi 3 03.06.2011 01:42
Проблема большого количества форм... Mr.Qwerty Общие вопросы Delphi 2 16.07.2009 15:53


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840