Серверный скрипт определения позиций сайта в основных поисковых системах

Скрипт определения позиций сайта в ПС Яндекс, Google и Рамблер

Просмотрев с десяток специализированных платных и бесплатных сервисов по определению позиций сайтов в ПС, так и не нашёл идеально подходящего для себя. Пришлось потратить целый день и написть себе именно то, что хотелось бы. Человек я не жадный, поэтому выкладываю для всех желающих в паблик. Далее – несколько простых инструкций, как это заставить работать на сервере, так, чтобы вместе с утренним кофе, у вас была возможность посмотреть как изменились позиции подопытных сайтов по заданным запросам.

Скрипт написан на PHP, информация хранится в файлах, базы не требуются.
Основные настройки, которые есть на данный момент, хранятся в файле settings.php

</code>

$yandex_depth = 500 ;

$google_depth = 500 ;

$rambler_depth = 100 ;

$yandex_region = 213 ;

<code>

Для Яндекса делается целых три замера: парсингом выдачи Яндекса, парсингом Мейл.ру и через запрос к XML. Глубина замера по XML – 1000 позиций, а глубина парсинга регулируется переменными указанными выше. Регион для Яндекса устанавливается добавлением к строке запроса параметра lr, величина которого берётся из переменной yandex_region.

Установка списка урлов и запросов. Немного необычно, но так как делалось для себя, пошёл по самому простому пути. Формат файла keys.tx:

site1.ru :: key1 : key2 : key3 = site2.ru :: key4 : key5 : key6 = site3 :: key7 

Поисковые запросы могут состоять из любого количества слов. Сайтов может быть сколько угодно.

Воизбежание блокировки ip-адреса поисковиками или перегрузки сервера, если список запросов слишком велик, внутри скрипта имеется большое количество разгрузочных пауз. Если есть желание контролировать большое количество запросов – лучше располагать скрипт на сервере, где по соседству лежит много других сайтов.

Установка скрипта. Качаем архив, загружаем в любую папку на сервере.
Позиции определяют следующие скрипты: goxml.php, goyandex.php, gomailru.php, gogoogle.php и gorambler.php. Их ставим на исполнение по крону, с разницей в час (чтобы исполнялись по очереди). Index.php покажет таблицу с нынешними позициями и последними изменениями. Mail.ru показывает выдачу Яндекса без региональной привязки, на Яндексе парсится выдача по региону, указанному в настройках.

У меня скрипт работает на хостинге BlueHost. Работает прекрасно. Единственная тонкость, о которой нужно вспомнить при установке заданий Cron – время на сервере соответствует физическому расположению хостига.

Скачать скрипт для определения позиций

Скачать скрипт (Версия 0.65  – 12Кб от 12 мая 2010)

Скрипт немного поправлен: парсится Мейл.ру; Гуглу не мешает Адсенс; Яндекс XML учитывает регион.

Код открытый, лицензия на использование: GNU/GPL v.2

Tags: , ,

This entry was posted on Monday, May 18th, 2009 at 21:18 and is filed under SEO. You can follow any responses to this entry through the RSS 2.0 feed. Responses are currently closed, but you can trackback from your own site.

108 Responses to “Серверный скрипт определения позиций сайта в основных поисковых системах”

Владимир June 1st, 2009 at 22:35

Добрый вечер.
Я сам программист и меня интересует такой вопрос.
Кстати спасибо за скрипт
Я хочу снабдить подобной системой админки своих сайтов, система удобная, проблем не будет, но если проверка позиций сайта будет идти с того же домена не повлияет ли это на индексируемость сайта?

admin June 2nd, 2009 at 08:58

Владимир, у нас весь офис сидит в интернете на одном айпишнике с сайтом компании, проблем с индексацией не наблюдается. А уж чего мы только не делаем в интернете ;) Думаю максимум чего можно добиться – это блокировки парсинга (и Яндекс и Гугл выдают в этом случае капчу и если парсинг автоматический, естесственно результата не даст). Но дабы избежать проблем, внутри скрипта стоят гигантские паузы, их можно ещё увеличить, проверка ведь всёравно идёт ночью.

Deeves June 3rd, 2009 at 15:13

установил, теперь буду ждать 3 часа. хотя час уже прошел, пока ничего

Deeves June 3rd, 2009 at 17:20

прошло 3 часа, результата нет :( в чем трабла может быть?

admin June 3rd, 2009 at 20:48

Deeves очень странно, как скрипт запускается, на компьютере или на сервере?

Deeves June 4th, 2009 at 07:39

Здравствуйте, скрипт запускается на сервере, premium акаунт на jino.ru
вот сам скрипт http://webpromo.kz/seo/
Если скрипт заработает он очень пригодится в работе, еще при нажатии на log, выходит ошибка

Deeves June 4th, 2009 at 07:48

кстати спасибо, дизайн класный

admin June 4th, 2009 at 08:56

Лога у вас пока нет, поэтому ошибка. Установлено всё вроде бы правильно. Кстати чтобы работал Яндекс XML нужно устаовить айпишник сайта, на котором запускается скрипт, в настройках на Яндексе.

У вас вылезает ошибка 504 и это на премиум аке, ничего себе. У меня этот скрипт проверено работает на трёх хостингах: bluehost, 1gb и hc.ru. Ошибка 504 означает, что превышено время ожиданя от внешнего сервера, т.е. того, который парсится. Подумаем.

Deeves June 4th, 2009 at 21:23

что то вышло в логах:

4.06.2009 9:46 >> Start parsing Yandex SERP
4.06.2009 9:46 Picking keywords for domain:
4.06.2009 9:57 >> Start parsing Rambler
4.06.2009 9:57 Picking keywords for domain: webcreative.kz
4.06.2009 9:58 Key разработка сайтов в Казахстане completed

Deeves June 5th, 2009 at 12:26

Пробовал на другом хостинге, к сожалению тоже не заработало. может я настраиваю его не правильно?

dim June 8th, 2009 at 14:50

DEEVES у вас наверное что-то не так установлено, скрипт работает.

Oleg June 9th, 2009 at 17:02

Спасибо за скрипт, давно такой искал. Подскажите какие права на файлы и папки устанавливать.

Deeves June 9th, 2009 at 23:18

да догадался :) я уверен что скрипт работает иначе автор бы его не выкладывал, только вот как узнать что именно не так сделал :)

может крон не правильно настроен. dim может поможете?

Deeves June 10th, 2009 at 14:53

автор отзовись я заплачу :)

admin June 10th, 2009 at 22:09

Плакать не надо )))
Судя по логу, скрипт запускался один раз, 4.06.2009 9:46, наверое руками.
Если и настроен крон – он не срабатывает. Как запускается крон нужно выпытывать из суппорта хостинга. Сам на блюхосте раза с седьмого только запустил, после того как изучил хелп ))
В остальном проблем быть не должно, настройки сайтов и ключевиков правильно грузятся. Чтобы что-то не подходило на хостинге – очень врядли, там просто функция file_get_content тянет странички, это работает на любом хостиге. Попробуйте запустить скрипты вручную: goxml.php, goyandex.php, gogoogle.php и gorambler.php. Каждый из них может копаться до часа, ничего страшного. Ну ещё возможный момент – нужного сайта просто нет в выдаче по заданному запросу =)

Oleg June 12th, 2009 at 17:34

Все заработало, только как его заставить обходить рекламу?

Oleg June 12th, 2009 at 17:48

Просто запросы которые в AdWords, скрипт видит на первой позиции, хотя это не так. Еще раз спасибо за скрипт.

admin June 12th, 2009 at 20:25

Об AdWords не думал, спасибо, почистим!

Oleg June 13th, 2009 at 05:26

DEEVES попробуй сменить владельца на все папки и файлы со скриптом :-)
У меня именно в этом была проблема.

Roman June 16th, 2009 at 10:37

Могли бы Вы поподробнее написать как задать регион. Куда именно вставлять параметр lr?

admin June 16th, 2009 at 22:14

Регион задаётся переменной $yandex_region в файле settings.php

dim June 19th, 2009 at 09:27

Странно, уже несколько дней вижу, что не работает параметр lr, xml показывает правильную московскую выдачу, а парсинг идёт по ходу без учёта региона, указанного в параметре. Чтото Яндекс похоже поменял, сначала парсинг показывал точь в точь как есть

Karlos June 23rd, 2009 at 15:01

Хороший скрипт, автору огромное спасибо!
Всё работает, позиции показывает. Пришлось конечно поковыряться с cron jobs.
Вопрос: а почему различаются позиции по XML и парсингу с указанным регионом? (Яндекс)

Евгений July 2nd, 2009 at 15:51

А история позиций сохраняется?

admin July 12th, 2009 at 01:56

Истории нет, только последнее изменение

AnRem September 30th, 2009 at 11:17

Здравствуйте. Установил скрипт вроде все настроил, запускается Cron-ом на хостинге руцентра, в логах:

30.09.2009 12:00 >> Start parsing Google
30.09.2009 12:00 Picking keywords for domain: lorelei.ru
30.09.2009 12:09 Key распродажа сантехники completed
30.09.2009 12:09 >> Finished: parsing Google

а результатов нет, хотя так это 8 место. =( в чем может быть проблема? Спасибо.

admin October 7th, 2009 at 08:52

AnRem странно, издалека сложно сказать. Судя по логу всё идёт нормально. Если только у хостинга закрыты некоторые операторы, но это очень врядли.

Кстати XML перестал корректно показывать позиции, если запрос идёт с сервера физически расположенного далеко от России, похоже привязали XML к региону..

cokoloff November 18th, 2009 at 11:01

Скрипт очень порадовал, неплохо реализовано, но есть один недочет, не работает Региональная функция… В XML ее как таковой вообще нет, а вот в goyandex.php где парсится страница http://go.mail.ru/search?q=... идет привязка по lr, которая не срабатывает…
Может всетаки лучше переделать скрипт под парсинг страницы http://yandex.ru/yandsearch/?p=0&numdoc=50&text=...
Очень полезный скрипт, всем устраивает, но не хватает нормальной региональной выдачи ((( Мы к сожалению не из Москвы…

admin November 19th, 2009 at 01:05

Немного изменился парсинг на мейле, поправил, по ссылке исправленная версия.

cokoloff, так и есть, мейл не отдаёт выдачу по региону. Мейл парсить чуть легче – он более терпелив (Яндекс чуть что – выдаёт капчу) и разметка страницы у него яснее. Но регион – очень нужная вещь, вы правы, нужно сделать Яндекс как вариант. Изучим.

admin November 21st, 2009 at 23:57

Версия скрипта обновлена, добавлен парсинг Яндекса с регионом.

Апгрейд предыдущей версии: заменить файлы index.php, goyandex.php, gomailru.php, скопировать папку mailru

Мейл.ру оставлен. Те настройки задержки в запросах, которые выставлены в скрипте по умолчанию, не вызывают появление капчи на Яндексе. Но есть смысл следить за этими параметрами. Работоспособность проверена на хостинге, территориально расположенном в США – региональная выдача отображается верно.

На всякий случай примечание: при запуске скрипта на хостнге 1Gb.ru через некоторое время вылезает ошибка 502. Видимо срабатывает какая-то защита или чтото в таком духе. Так как в остальных местах, где есть возможность проверить – всё работает отлично – изучать проблему не стал.

cokoloff November 23rd, 2009 at 10:07

Спасибо за ответы, за обновление скрипта… Сейчас же попробую.
Отдельно скажу что я еще 19 числа уже переписал скрипт yandex, который так же хорошо парсит яндекс регионально… Ошибок пока что небыло, каптча не выскакивает… За 4 дня работы – все стабильно…
В ближайшее время проверю вашу новую версию и отпишусь! За скрипт вам спасибо еще раз!

Lifter November 26th, 2009 at 13:20

Добрый день! Во-первых огромное спасибо за скрипт, использую его уже пару месяцев, переработав для своих нужд (подключил к БД, встроил в cms). У меня вопрос, а можно ли для избежания капчи использовать не паузы, а например уникальные http заголовки? я сейчас вот пытаюсь это сделать, но что-то не очень получается…есть ли в этом вообще смысл, как думаете?
З.Ы. В яндекс.xml тоже есть возможность разделения выдачи по регионам.

Hotblack November 28th, 2009 at 22:33

Lifter, не подскажете как изменить выдачу в результатах Яндекс.XML? Мне просто надо 2 региона проверять…. раз уж Вы знаете…

pavel December 1st, 2009 at 08:07

Здравствуйте! Можно к скрипту прикрутить админку?

Lifter December 3rd, 2009 at 12:12

to HOTBLACK: ну я знаю 2 способа
1) Почитайте тут http://help.yandex.ru/search/?id=481939 про оператор cat, в самом низу страницы. Смысл в том что рассматриваются только сайты определенного региона, правда вот результаты часто не соответствую реальным…У нас есть партнерский договор с Яндексом и я веду долгую переписку с их техподдержкой, но пока еще ниче не добился от них=)
2)А вот это способ работает точно=) Я зарегил в Яндексе несколько серверов и указал для них разный регион, ну а дальше все просто – запускаю скрипт на разных серверах, а в одну БД получаю выдачу с разных регионов.
to Pavel: я например в CMS встроил скрипты, что б отдельную админку не писать..

Ну народ, неужеде ни у кого нет мыслей по моему предыдущему посту?? надо бы как-нить избавиться от этиз задержек…

admin December 4th, 2009 at 08:42

Изменилась обработка на Яндексе!

Изменения только в файле goyandex.php

WhiteDemon December 7th, 2009 at 12:25

Огромное спасибо за скрипт.
Поставил скрипт, крон пока не настраивал, запускал вручную. Такая проблема, проверяются позиции только по рамблеру, по остальным, как я понял из лога скрипт не понимает какой домен искать.
Вот лог:
7.12.2009 11:06 >> Start parsing Rambler
7.12.2009 11:06 Picking keywords for domain: proektstroymebel.ru
7.12.2009 11:07 >> Start parsing Yandex SERP
7.12.2009 11:07 Picking keywords for domain:
7.12.2009 11:08 Key стойки ресепшн completed
7.12.2009 11:09 Key стойка администратора completed
7.12.2009 11:11 Key педикюрное кресло completed
7.12.2009 11:12 Key косметологическое кресло completed
7.12.2009 11:14 Key маникюрный стол completed
7.12.2009 11:15 Key мебель для парикмахерских completed
7.12.2009 11:16 Key completed
7.12.2009 11:16 >> Finished: parsing Yandex SERP

В результате в таблице ничего не меняется, ни одной позиции не находит.

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

admin December 8th, 2009 at 00:05

WhiteDemon, в самих файлах ничего не изменяли?

sparco December 11th, 2009 at 13:38

установи chmod на все папки 777

sparco December 12th, 2009 at 15:52

что значит ошибка “….. pos:-1″ ?

sparco December 13th, 2009 at 12:04

Разобрался, в скрипте есть ошибка/неточность, точнее в goyandex.php

… &rstr=’ . $yandex_region . ‘ …

этот параметр определяет рубрику, например, если указать 38 регион, то результата вы не дождетесь.

Решение: удалить кусок кода, который указан выше.

admin December 15th, 2009 at 00:32

sparco, разве этот параметр не означает «restrict» – всё равно что поиск с галочкой?

sparco December 16th, 2009 at 14:44

с результатом не поспоришь

COKOLOFF December 16th, 2009 at 18:44

&rstr=”" – означает «restrict», и это действительно поиск с галочкой, но есть одно НО.
Яндекс определяет автоматический регион по IP, и выдает результаты поиска по &lr=”номер региона”, и если Дополнительно указать &rstr=”номер региона галочки!!!”, то он выбросит все сайты, географическое положение которых отличаются!!! от &rstr=”номера региона с галочкой!!!”.
Другими словами мы получаем довольно сильный двойной фильтр.
К примеру по запросу “вконтакте” по региону Самара – в выдаче 21 млн страниц
По этому же запросу “с галочкой в Самаре!” в выдаче 151 тыс. страниц , и как вы уже поняли сайта vkon***te.ru уже нет на первом месте… даже больше, его вообще нет в выдаче, зато присутствуют Самарские сайты, где упоминается этот домен.

Поэтому &rstr=’ . $yandex_region . ‘ на самом деле лучше убрать из скрипта…

admin December 16th, 2009 at 20:38

COKOLOFF, sparco, спасибо! Убедительно

sparco December 17th, 2009 at 12:30

интересно мнение знающих людей, как думаете, увеличится ли нагрузка, если данные хранить в mysql, а не в файлах? что рациональней?

admin December 17th, 2009 at 23:59

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

COKOLOFF December 22nd, 2009 at 16:37

Заметил кстати еще один недочет, если сайт по определенным запросам выскакивает также в Яндекс.Директ, то скрипт его определяет как 11 позиция. Хотя позиция может быть и не 11 вовсе.
Это скорее всего происходит из-за метода выборки при парсинге, идет сравнение по url, и видимо в колонке сбоку идет такойже кусок кода с url. Вот мы и получаем постоянно 11 позицию.

procreativ December 22nd, 2009 at 22:14

у тех у кого не работает парсер, проблема в том что ключевики и домены надо добовлять в редакторе кода а не в простом блокноте

admin December 24th, 2009 at 09:24

Про Директ знаю, только нет своих объявлений, проверить пока не могу никак. Яндекс начал блокировать айпи при парсинге, причём даже при достаточно больших паузах. Будем парсить через сокеты значит..

Hotblack December 27th, 2009 at 00:01

Спасибо ещё раз за скрипт!
Пользуюсь исключительно Я.XML. Умудрился его настроить, чтобы по регионам снимал позиции…
Сейчас думаю как mysql и cms вообще прикрутить.
Но есть один вопрос… как можно изменить регион гугл? Сервер в Питере, а позиции нужны другого города. Ессно выдача разная :)
Ломаю голову))) Мож кто знает?

sparco January 4th, 2010 at 11:09

Когда будет версия с сокетами?

ukrseo January 5th, 2010 at 13:01

Здравствуйте
Спасибо автору за скрипт. Как настраивается (определяется) региональная выдача для google в скрипте. По ip сервера где выложен скрипт? Если скрипт лежит на сервере в Москве то выдача делается для google.ru если в Киеве то google.com.ua а если сервер в США то google.com ?
Спасибо за ответ

Павел January 15th, 2010 at 18:59

Здравствуйте.
Наконецтоже нашол то что искал но на второй день вышла проблема не проверяет скирпт позиции в яше все слова err.
Регион 213 (Москва)
Скрипт лежит на отдельном сервере.
Причем в гугле, xmlyandex, mail, рамблер нормально проверяет…
И еще вопрос xmlяша и просто яша показывают и выходит что хмл очень врет сильно…
Спасибо…

Колодин Василий January 15th, 2010 at 23:07

А в чем может быть сложность???
С крона приходит уведомлялка на мыло:
– – pos:-1Yandex parsing completed 15.01.2010 23:02
В логах, ничего нет.
Результатов выдачи, соответственно тоже.
Хостинг: timeweb.ru

STL January 19th, 2010 at 17:31

Господа, кто-нибудь знает, на masterhost.ru эта штука работает? А то чего-то никак не получается заставить ее работать, не знаю в чем дело. Пробовал и вручную скрипты запускать – ничего не происходит. А логи пустые почему-то.
Адрес: http://steline.ru/cup/

droid January 20th, 2010 at 10:13

Добрый день, спасибо Вам за такой скрипт, очень полезный, у меня два вопроса.
1.Можно ли поставить несколько копий этого скрипта на сервере, для разных сайтов например, а то запросов очень много и путаюсь очень часто. Не повлияет ли это на проверку позиций?
2.Может кто нибудь сделает историю за отдельную плату?

Добров Константин January 25th, 2010 at 23:14

А Я-робот не выскакивает? Как боритесь при большом объеме запросов?

parikmaxep January 28th, 2010 at 10:32

День добрый.
Тут уже писали про трабл с определением позиций в гугле, если сайт присутствует в АдВордс.
Планируете ли исправить?

MageMerlin February 2nd, 2010 at 13:30

Спасибо большое! Очень хороший базис для дописывания своей версии скрипта.

Как по мне, так не хватает:

1) Прокси в любом виде
2) Истории
3) Апдейта позиций на основании предыдущих результатов (уменьшение кол-ва запросов к ПС)
4) Фильтра директа/адвордса (об этом упоминали)
5) Хранения в БД
6) Спрятанной под катом метаинформации (время апдейта и т.д.)

mastablasta19 February 3rd, 2010 at 00:01

Спасибо за скрипт! Жалко, что парсинг Яндекса не пашет.

admin February 5th, 2010 at 20:21

Эхх, сейчас отвечу всем! Немного отсутствовал во времени ))

1) Парсинг Яндекса выдаёт капчу при втором же обращении, иногда с первого раза – просит куку, которую нужно получить используя его джаваскрипт. Хорошо продумали )) Сделал парсинг qip.ru вместо Яндекса и дополнительно изменил настройки XML, теперь за запрос вытаскивается 200 позиций, расход значительно снизился.

2) Вопрос с Адсенсом решён, теперь позиции определяются почти точно. Почти – тянется с другого места из Гугла, там очень редко, но замечено – могут быть отличия на 1-2 позиций.

3) У кого не работает на различных хостингах – выставляйте права 0777 на все папки и файлы.

4)Запускать несколько версий на одном сервере никаких проблем – кроме возможной блокировки Гуглом или тем что будет для Яндекса, т.е. теперь кипом.

5) Регионы в Гугле решаются только физическим располодением сервера, других хитростей, к сожалению, мне не известно.

6) Ну и самое частое вопрошание о БД и истории. Есть версия и с БД, и с историей и с графиками цветными, и контролем за урлами и состоянием страниц, с контролем бюджета по урлам (по апи сапы и других бирж), и с кучей других наворотов для ведения проекта с большим количеством запросов, но есть проблема – тот скрипт делался для конкретного заказчика, очень ему нравится, оценивается им достаточно высоко в денежном выражении и вообщем раздавать его бесплатно как-то непорядочно. Можно договориться о продаже за некий бублик как-бы коммерческой версии программы, но тут возникает вопрос о техподдержке, так как изменяются условия парсинга и т.п., короче, нужно думать, обсуждать.

А у этой, публичной версии скрипта в ближайшие дни ожидается обновление, решающее проблемы с парсингом Яндекса, Гугла-Адсенса и может быть перетянем сюда в каком-то виде историю.

sparco February 6th, 2010 at 10:30

Уважаемый admin. Как с вами связаться?

Tyvaldr February 8th, 2010 at 13:09

Скрипт понравился. На выходных прикручу к нему интеграцию с БД.
Куда результат прислать автору?
Благодарю за скрипт.

COKOLOFF February 9th, 2010 at 08:47

Ура, наконец-то тайна завесы раскрылась! А то я уже стал думать, что проект скрипта свернулся и забросился на дальнюю полку… Жду с нетерпением обновление вашего замечательного скрипта… Спасибо вам за то что вы делаете!

MageMerlin February 11th, 2010 at 13:48

Хм, у меня вот буквально только что вывалило капчу на Яше спустя примерно 15 запросов подрят (таймаут = 30 мек макс). Так что… Все работает. Наверное. Хостинг – tuthost.com

Небольшой апдейт алгоритма по яндексу. В функции yand() keixt делать вот так

while( !$found )
{
$n = $pn * 10;
$qp = ‘http://yandex.ru/yandsearch?p=’ . $pn . ‘&text=’. $q .’&lr=’ . $yandex_region;
$page = file_get_contents($qp);
if (strstr( $page , ‘Я не робот’ ))
{
$found = true; $ret = -2;
}
else
{
if( strstr( $page , $url ) )
{
$found = true;
$tok = explode( ‘clck.yandex.ru’ , $page);
foreach( $tok as $i=>$pp ) if( strstr( $pp , $url ) ) { $ret = $i + $n +1; break; }

}
}
if( $n > $yandex_depth ) { $found = true; $ret = -1; }
$pn++;
sleep(10); ///// <—————————————- PAUSE BETWEEN PAGES !!!
}

Первое – ловит страницу с капчей (чтоб не свалилось в бесконечный цикл запросов). Второе – слип нужно делать после проверки последней страницы, это -10 сек при упираниии в потолок.

MageMerlin February 11th, 2010 at 14:01

Насчет саппорта – смотрите, я сталкивался с проблемой, когда люди продавали некую программу за 50 баксов, и в ней был заключен момент обхода антибота. Когда программа покупалась всеми – проблем с апом кода бесплатно не было. Когда программу покупать перестали по причине перенасыщенности рынка (прога узкоспециализированная) – то бесплатные апы стали автору невыгодны. Но и брать деньги за ап кода он уже не мог. Итог – запрошеннный проект.

Мое имхо – брать за программу деньги, а за ап алгоритма – типа 10-15 долларов.

MageMerlin February 11th, 2010 at 17:14

Еще небольшой ап.

if( $n > $yandex_depth or strstr ($page, ‘Несуществующая страница’) ) { $found = true; $ret = -1; }
$pn++;
sleep(10); ///// <—————————————- PAUSE BETWEEN PAGES !!!

Отлавливает ситуацию когда уже яндекс не выдает страницы поиска ($yandex_depth сильно большой)

admin February 12th, 2010 at 23:22

Эх, ну вот оказывается регион через XML это очень просто, проверил – работает…

sparco February 14th, 2010 at 09:35

Admin, отправил вам письмо, 10-го февраля, ответа – нет.

sparco February 14th, 2010 at 09:36

“регион через XML это очень просто” – можно подробнее? :)

paca February 14th, 2010 at 22:38

Tyvaldr
А можно мне не дожидаться реакции автора и попросить мне выслать скрипт на rochonЦОБАКАyandex.ru? =)

Kristina February 20th, 2010 at 08:15

Здравствуйте. А если на моем сайте нет файла Cron – что тогда делать?

Hotblack February 20th, 2010 at 15:57

Sparco, если конечно автор скрипта не будет ругаться, то…. в файле xml просто написать параметр lr=XXX:

$response = file_get_contents(‘http://xmlsearch.yandex.ru/xmlsearch?lr=213′, true, $context);

Регионы брать тут:
http://search.yaca.yandex.ru/geo.c2n

Так же обнаружил, что ограничение в 1000 запросов накладывается не на 1 ip, а на 1 учетную запись. В связи с чем пришлось переписать немного скрипт…. :) Но зато теперь когда 1000 запросов исчерпаны, скрипт сам меняет учетку (залогинивается, убивает в старой учетке ip, залогинивается в новую учетку и вписывает ip в новой). Но правда пришлось прикрутить proxy… думал поначалу поможет :)

Т.е. в теории можно имея 1 ip сканить бесконечно….

sparco February 21st, 2010 at 18:59

Спасибо!

slo_nik March 2nd, 2010 at 16:37

Добрый день.
Спасибо за скрипт, работает нормально, но вот только если запустить его вручную, через cron не хочет запускаться.
записывал задание через панель управления сайтом.
прописал в задании путь к скрипту, для начала gogoogle.php, “/home/ИМЯ/domains/ДОМЕН/public_html/test/d4/gogoogle.php” и результате ни каких действий не было.
с cron я не работал раньше, подскажите, пожалуйста, куда копать, как запустить выполнение по cron ?

Илья March 3rd, 2010 at 23:58

Нерод, поделитесь кто-нибудь рабочим скриптом парсинга яндекса (не xml) плиз

Keler March 7th, 2010 at 03:20

Скажите пожалуйста, это ведь только для русского google, помогите пожалуйста разобраться как его(скрипт) на сторону Украины переманить?
Спасибо вам огромное за скрипт!

Keler March 7th, 2010 at 18:34

Скажите пожалуйста, а как его можно переделать под Украинский Гугл?:)Помогите пожалуйста, я даже заплачу :)

admin March 9th, 2010 at 17:13

Hotblack правильно, регион – единственный параметр у XML который нужно выность в адрес по которому посылается запрос. Странно почему так сделали, прежде чем найти тупо тыком в небо – пиршлось перерыть все параметры иксемеля.

С учётками на Яндексе действительно можно крутить, если есть несколько записей – то просто переходить на другую.

admin March 9th, 2010 at 17:14

Без крона можно запускать с другого сервера, на котором крон есть, ну или руками.

admin March 9th, 2010 at 17:47

Keler расположить его физически в Украине и сменить в скрипте .ru на .ua =)

admin March 9th, 2010 at 18:07

Продвинутая платная версия скрипта готовится к продаже. О его возможностях вкратце написано выше в комментариях. Для работы понадобится PHP и MySQL. Начало продаж бетаверсии – предположительно начало апреля.

Всем, кто отписался выше этого сообщения в этой теме и захочет купить скрипт – естесственно спец скидка ;)

slo_nik March 9th, 2010 at 21:57

Возникла проблемка.
При парсинге yandex выдаёт постоянно в графе таблицы “err”, написал отдельно парсер под yandex, при тестировании предлагает ввести капчу.
Как это можно исправить?

admin March 10th, 2010 at 00:09

slo_nik, да, эта проблемка возникла около месяца назад. На сёрче писали, что механизм примерно такой: при первом обращении яндекс грузит (причём джаваскриптом) куку и при повторном – её проверяет. Если этой хитрой куки нет – сразу капча. Посмотрел снифером – там всё ещё хуже, кук больше, и курл из них получает только одну. Выглядит всё слишком пугающе, лучше парсить qip или LJ. Если err появляется в столбце с XMLем – значит закончилась выделенная тысяча.

Владимир March 10th, 2010 at 01:05

Заметил интересный момент, скрипт парсера яндексе xml не запускается ночью, проверял вручную, все остальные поисковики работают а именно xml яндекс не работает при запуске в ручную пишет ошибку иероглифами Warning: file_get_contents(http://xmlsearch.yandex.ru/xmlsearch) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /home/site/public_html/sitename/papka/goxml.php on line 84
㮳 ﹨⫠ 池 Может дело в разнице во времени сервера и сервера яндекса ?

slo_nik March 10th, 2010 at 01:34

Попробовал парсить собственным творением – выдало капчу. Я думаю, что и в Вашем парсере “err” вылазил потому, что просто яндекс выдавал капчу. я запускал скрипт руками и наверное переусердствовал.
С каким интервалом можно запускать скрипт, что бы не выдавало капчу?

илья March 16th, 2010 at 14:14

Всем привет. Усовершенствовал скрипты (curl), в том числе и яндекс парсер, с обработкой капчи, но столкнулся с проблемой, что при отправке уже решенной капчи по форме – происходит редирект и почему то хтмп не парсится после этого. Могу поделится своими доделками взамен на помощь по решению траблы с отсылкой капчи.
icq 92195054

Hard March 21st, 2010 at 19:14

Блин не пойму что такое поставил скрипт, забил в крон прошли сутки и ничего, попробовал запустить вручную выдал: Exited with return code = 126 в чем причина может быть?

admin March 22nd, 2010 at 10:41

HARD, 126 – невыполнимая команда, неправильно настроен крон, команда должна быть примерно такая: “/usr/local/bin/php -q /home/имя-пользователя/data/www/имя-домена/script.php” ещё точнее знает только хостер.

ан скип March 25th, 2010 at 05:15

Отличный набор скрипов!
Запуск заданий из крона на хостинге «Караван-Телеком» заработал так:
0 1 * * * cd /home/www/htdocs/cup/; /usr/local/bin/php -q goxml-test.php
Если не сменить директорию перед запуском скрипта, а просто указать полный пусть к goxml-test.php – выдаются ошибки записи в файлы. Пробовал ещё вариант с применением в cron wget, но там тоже есть свои нюансы.

mahn0 March 25th, 2010 at 10:40

Подскажите, лечится проблема с яндексовской капчей как-нибудь?.. Выдается сразу же.

Hard March 29th, 2010 at 15:48

Спс, ошибки теперь вроде нет но в логах пишет это 29.03.2010 16:43 >> Start parsing Google
29.03.2010 16:43 Picking keywords for domain: яЛПadban.ru
29.03.2010 16:45 Key а аЕаКаЛаАаМаНаАб�б�Еб��completed
29.03.2010 16:47 >> Start parsing Yandex XML
29.03.2010 16:47 Picking keywords for domain: яЛПadban.ru
29.03.2010 16:47 Key а аЕаКаЛаАаМаНаАб�б�Еб��completed
29.03.2010 16:47 Key а�ОаНб�ЕаКб��НаАб�б�ЕаКаЛаАаМаА completed
29.03.2010 16:47 Key а�АаНаНаЕб�НаАб�б�ЕаКаЛаАаМаА completed
29.03.2010 16:47 Key аЂаИаЗаЕб�НаАб�б�ЕаКаЛаАаМаА completed
29.03.2010 16:47 Key а�Аб�АаБаОб�Аб��completed
29.03.2010 16:47 Key б�ЕаКаЛаАаМаА completed
29.03.2010 16:47 Picking keywords for domain: adbig.ru
29.03.2010 16:47 Key а аЕаКаЛаАаМаНаАб�б�Еб��completed
29.03.2010 16:47 Key а�ОаНб�ЕаКб��НаАб�б�ЕаКаЛаАаМаА completed
29.03.2010 16:47 Key а�АаНаНаЕб�НаАб�б�ЕаКаЛаАаМаА completed
29.03.2010 16:47 Key аЂаИаЗаЕб�НаАб�б�ЕаКаЛаАаМаА completed
29.03.2010 16:47 Key а�Аб�АаБаОб�Аб��completed
29.03.2010 16:47 Key б�ЕаКаЛаАаМаА completed
29.03.2010 16:47 >> Finished: parsing Yandex XML
Так и должно быть:? но в позициях ничего не меняется

admin March 29th, 2010 at 16:53

mahn0 говорят что лечится, но очень сложно.
HARD так не должно быть – кодировка неправильная, смотрите файлик с ключами.

Hotblack April 3rd, 2010 at 13:42

mahn0, а зачем вам Яндекс? Используйте XML – он как раз для автоматизированных действий… а Яндекс оставьте людям :)

Veterok April 4th, 2010 at 21:23

Доброго времени суток! Подскажите пожалуйста что за каракули в файле goxml.php?
if ($xmlresponce->error) {
print “Г®и®Ёл¬  с«Ґ¤уѕ№ у ®ёйўЄає ” . $xmlresponce->error . “\n”;
и
} else {
print “г®іт°Ґ­пЂї п№Ёв«  сҐ°ўж± \n”;
$exit = 1;
Ещё вопрос. Почему не отображается статистика? Во всех ячейках стоят прочерки. Запустил gogoogle.php В Логе пишет
3.04.2010 23:48 >> Start parsing Google
3.04.2010 23:48 Picking keywords for domain: tuclass.ru
3.04.2010 23:50 Key Нижний Новгород • Портал completed
а таблица при этом пустая, как и была.
В чем может быть проблема?

Алексей April 12th, 2010 at 23:39

Привет!

Нашёл баг: в строке запроса к Яндексу надо поставить “-” перед значением rstr (не rstr=47 а rstr=-47) иначе отправляет в поиск по каталогу!

Alex April 14th, 2010 at 21:49

Админ, а как с тобой связаться? Хочу приобрести скрипт пробивки позиций с доработками. Заинтересовала версия, которая делалась под кого-то…аська 310-194-636

Анатолий May 4th, 2010 at 22:35

Есть желание доработать скрипт и вообще сотрудничать в дальнейшем. Можно ли контакты?

alexmay May 7th, 2010 at 15:27

чет с кодировкой перемудрил, key.tx – нужно в win-1251 сохранять, а index в utf-8 выводи – в итоге – иероглифы, к тому же если key.tx в utf-8 – не работает, при этом $raws = iconv разкоментил, но все равно кодировку не меняет, правда я особо не колупался в нем…

Napas May 11th, 2010 at 10:41

Ой,
что-то перестал работать бессплатный скриптик
:(
Я в печале

admin May 12th, 2010 at 12:09

У гугла сменился паттерн, поправим сегодня
А нет, всё хуже, вообще сменили тулбарный поиск, придётся парсить основную выдачу

admin May 12th, 2010 at 15:28

Исправленный файл gogoogle.php – скачайте переименуйте, замените.

http://dim.ermolaev.biz/up/gogoogle.php.txt
Выдача отличается от основной, отстаёт или отличается всегда – увидим. Тоже самое показывается в программе Allsubmitter если спарсить Гугл. В Нигме выдача только по гуглу отличается от этих двух. По изучению контрольной группы запросов получилось, что выдача для браузера Опера (это та которая прописана в исправленном файле) – самая близкая к мозилловской. На основном поиске Гугла теперь два редиректа и скрипт…

admin May 12th, 2010 at 15:51

alexmay все файлы должны быть в utf-8 без разметки.
могу посоветовать крутейший редактор. который это делает без проблем (в отличие от стандартного блокнота) – Notepad2, количество настроек и его гибкость в целом – вас поразит. Кроме всего прочего он умеет писать файлы в utf-8 без bom.

Keler May 13th, 2010 at 14:14

Fatal error: Call to undefined function: hget() in /home/kievvago/public_html/seo/gogoogle.php on line 57

вот такое вот пишет :( помогите пожалуйста

admin May 14th, 2010 at 16:06

KELER скачайте ещё разок файл, видимо вы его забрали очень сразу, я вносил правки ещё после этого через минут 10.

admin May 14th, 2010 at 16:24

Ветка для вопросов этой версии скрипта: http://seocommander.ru/forum/viewforum.php?f=6