Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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