Странности при парсинге

D
На сайте с 28.06.2008
Offline
1103
268

Я паршу сайт и впервые столкнулся с непонятным багом - если запустить скрипт без задержки,

то запросы идут примерно 3 раза в секунду (я купил 200 прокси, каждый запрос с нового айпи)

и примерно с 10-15 запроса начинаются пропуски - скрипт ничего не собирает и как бы перескакивает на следующие запросы, т.е. появляются дыры в данных - в базу пишутся пустые строки.

Стоит добавить usleep(300000); и все становится нормально, собирает без разрывов. (это минимальная задержка которая убирает пустые строки).

Что это может быть?

логика парсера такова:

function getPageByUrl ($url)

....
require_once '/var/www/phpQuery.php';
запрос в базу с лимитом 5000 на получения списка урлов по которым нужно пройтись

foreach ($result as $item) {
$links = $item->url;
$pars = getPageByUrl($links);

//задержка
usleep(300000);
$pq = phpQuery::newDocument($pars);
....
далее вся логика и запись в мою базу
}
-S
На сайте с 10.12.2006
Offline
1355
#1

Возможно, проблема с загрузкой страницы сайта или проблема с доступностью прокси в конкретный момент.

D
На сайте с 28.06.2008
Offline
1103
#2

Сайт это превое что проверил - с ним проблем нет. Да, вы правы - скорее все дело в прокси. Они вероятно все хоть и разных городов но видать раздаются или контролируются одним узлом, где есть лимит...

-S
На сайте с 10.12.2006
Offline
1355
#3
Dram:
Сайт это превое что проверил - с ним проблем нет.

Бывает, что сайт недоступен в критические моменты нагрузки на сервер, если плохо оптимизировано и настроено. Потому проверка в какой-то момент не даст ничего. То есть будет парсить 1000 страниц нормально, а потом 1-2 будут недоступны.

Как вариант - складывать незагруженные страницы в отдельный файл и просто допаршивать в конце.

Вообще нет смысла в 99% случаев покупать пачку прокси, а достаточно одного - покупаете 1 впс и настраиваете свой прокси, где нет умирания и еще 10 человек не используют его в shared тарифе. Если уж парсить Яндекс, Гугл или что-то защищенное - тогда нужны пачки или просто сменить источник парсинга.

Выдачу Гугла, например, проще парсить из других поиковиков, которые используют его выдачу.

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