Farsh
~ on ~ high ~ wave ~
Парсер поисковых систем
Добрый день всем.
В интернете сейчас куча программ , которые облегчают жизнь сео оптимизаторам .
Пример - site auditor ( http://www.site-auditor.ru ) .
Мне нужно написать похожее ( конечно с меньшим кол-вом функций ) , только на пхп .
Для начала , чтоб можно было вводить кучу слов или фраз ( запросы ) , и сам сайт ,
и начинался обход 4 поисковых систем ( яндекс , рамблер , гугл , вебалта ) по этим
запросам в поиске номера позиции этого сайта . И чтоб сравнивалось с предыдущими значениям , то есть стало лучше или хуже .
В общем сделал , но проблема в том , что работает все ОЧЕНЬ МЕДЛЕННО .
Раз в 5 медленней ...
Отсюда у меня такие вопросы :
1) программы такого рода , написанные на прикладных языках программирования , по умолчанию работают гораздо быстрее , чем написанные на веб языках ?
Решает ли железо ?
2) что нужно учитывать при написании парсера на веб языке ?
Вот основной принцип работы моего скрипта :
1) получает список запросов
2) получает содержимое страницы при помощи file_get_contents
3) загружает это содержимое в DOM
( как вы думаете при помощи file() и регулярками парсинг был бы быстрее? )
4) получает все ссылки позиций при помощи DOM
5) сравнивает адрес сайта , который мы ищем , с атрибутом href этих ссылок
( при этом каждый раз при получении href ссылки у нее убирается http и www , то есть очень часто используется ereg_replace )
6) если произошло совпадение , узнаем номер позиции и идем в рамблер - гугл - вебалта , если нет - переходим на вторую страницу яндекса , и продолжаем поиск , и так далее .
7) как завершится 1 запрос в 4 парсерах , идет проверка в БД , есть ли предыдущии позиции с таким запросом такого сайта . Если есть - берутся оттуда значения , сравниваются с текущими , и апдейтятся новыми .
8) так все запросы , которых может быть до 150 штук .
9) все выводится на страницу .
Может можно сделать как то быстрее ?
Как парсится в этом же аудиторе , я сам не врубаюсь , уж слишком быстро ..
С яндексом как мне сказали надо юзать yandex xml , но там проблема , что стоит ограничение в 1000 запросов за день . Ладно , для начала опустим это . Покопался в нем , и например чтоб сделать get запрос по мебели , выведя первые 50 позиций , нужно чтоб было такое :
http://xmlsearch.yandex.ru/xmlsearch?query=%EC%E5%E1%E5%EB%FC&&groupby=attr%3Dd.mode%3Ddeep.groups-on-page%3D50.docs-in-group%3D1
Но проблема , что размер этого xml будет 90 с копейками килобайт , что есть немало .
Можно ли как нибудь сделать , чтоб не выводилась лишняя информация в этом xml, или можно как то сделать запрос , чтоб сразу узнать позицию сайта ? Покопался в документации , но ничего такого не нашел
Ещё одна проблема яндекса : после определенного количества запросов ( слишком быстро с одного ИП ) он требует каптчу .. Пробовал ставить слип даже в 3 секунды , тоже самое ..
Кстати , зачем вся эта мутотень , когда есть тот же самый бесплатный сайт аудитор , который сделан через тот же яндекс xml ? Просто там тоже самое , на 50 позиции яндекса отрубается ..
Есть идея при парсинге яндекса проверять структуру страницы , есть там каптча , то выводить эту каптчу у себя в скрипте , я ее ввожу , и нажимаю кнопку продолжить . Только пока не особо все это себе представляю .
Если обсуждение обхода каптчи яндекса не разрешено в этом случае, тогда просто не отвечайте , но не закрывайте тему .
Тут один человек мне сказал , что можно попытатся парсить при помощи баров ( yandex bar , google bar , и тд ) . Что через них как то можно делать запросы , и получать ответы в формате xml . Полазил в инете - ничего толкового не нашел ..
И вообще так посчитал , что чтобы пропарсить 150 запросов по 4 поисковикам , требуется около 80 мегабайт ( omg ) .. Я аж сам испугался
Подскажите что думаете , что знаете , как улучшить код / увеличить скорость работы .
Заранее спасибо
Добрый день всем.
В интернете сейчас куча программ , которые облегчают жизнь сео оптимизаторам .
Пример - site auditor ( http://www.site-auditor.ru ) .
Мне нужно написать похожее ( конечно с меньшим кол-вом функций ) , только на пхп .
Для начала , чтоб можно было вводить кучу слов или фраз ( запросы ) , и сам сайт ,
и начинался обход 4 поисковых систем ( яндекс , рамблер , гугл , вебалта ) по этим
запросам в поиске номера позиции этого сайта . И чтоб сравнивалось с предыдущими значениям , то есть стало лучше или хуже .
В общем сделал , но проблема в том , что работает все ОЧЕНЬ МЕДЛЕННО .
Раз в 5 медленней ...
Отсюда у меня такие вопросы :
1) программы такого рода , написанные на прикладных языках программирования , по умолчанию работают гораздо быстрее , чем написанные на веб языках ?
Решает ли железо ?
2) что нужно учитывать при написании парсера на веб языке ?
Вот основной принцип работы моего скрипта :
1) получает список запросов
2) получает содержимое страницы при помощи file_get_contents
3) загружает это содержимое в DOM
( как вы думаете при помощи file() и регулярками парсинг был бы быстрее? )
4) получает все ссылки позиций при помощи DOM
5) сравнивает адрес сайта , который мы ищем , с атрибутом href этих ссылок
( при этом каждый раз при получении href ссылки у нее убирается http и www , то есть очень часто используется ereg_replace )
6) если произошло совпадение , узнаем номер позиции и идем в рамблер - гугл - вебалта , если нет - переходим на вторую страницу яндекса , и продолжаем поиск , и так далее .
7) как завершится 1 запрос в 4 парсерах , идет проверка в БД , есть ли предыдущии позиции с таким запросом такого сайта . Если есть - берутся оттуда значения , сравниваются с текущими , и апдейтятся новыми .
8) так все запросы , которых может быть до 150 штук .
9) все выводится на страницу .
Может можно сделать как то быстрее ?
Как парсится в этом же аудиторе , я сам не врубаюсь , уж слишком быстро ..
С яндексом как мне сказали надо юзать yandex xml , но там проблема , что стоит ограничение в 1000 запросов за день . Ладно , для начала опустим это . Покопался в нем , и например чтоб сделать get запрос по мебели , выведя первые 50 позиций , нужно чтоб было такое :
http://xmlsearch.yandex.ru/xmlsearch?query=%EC%E5%E1%E5%EB%FC&&groupby=attr%3Dd.mode%3Ddeep.groups-on-page%3D50.docs-in-group%3D1
Но проблема , что размер этого xml будет 90 с копейками килобайт , что есть немало .
Можно ли как нибудь сделать , чтоб не выводилась лишняя информация в этом xml, или можно как то сделать запрос , чтоб сразу узнать позицию сайта ? Покопался в документации , но ничего такого не нашел

Ещё одна проблема яндекса : после определенного количества запросов ( слишком быстро с одного ИП ) он требует каптчу .. Пробовал ставить слип даже в 3 секунды , тоже самое ..
Кстати , зачем вся эта мутотень , когда есть тот же самый бесплатный сайт аудитор , который сделан через тот же яндекс xml ? Просто там тоже самое , на 50 позиции яндекса отрубается ..
Есть идея при парсинге яндекса проверять структуру страницы , есть там каптча , то выводить эту каптчу у себя в скрипте , я ее ввожу , и нажимаю кнопку продолжить . Только пока не особо все это себе представляю .
Если обсуждение обхода каптчи яндекса не разрешено в этом случае, тогда просто не отвечайте , но не закрывайте тему .
Тут один человек мне сказал , что можно попытатся парсить при помощи баров ( yandex bar , google bar , и тд ) . Что через них как то можно делать запросы , и получать ответы в формате xml . Полазил в инете - ничего толкового не нашел ..
И вообще так посчитал , что чтобы пропарсить 150 запросов по 4 поисковикам , требуется около 80 мегабайт ( omg ) .. Я аж сам испугался

Подскажите что думаете , что знаете , как улучшить код / увеличить скорость работы .
Заранее спасибо
