пятница, 20 декабря 2013 г.

Сборщик слов с Google.KeywordPlanner

В предыдущей статье я создал сборщик поисковых фраз с Yandex.Wordstat. Для  этого я использовал Human Emulator. Сегодня я создам сборщик ключевых слов, который будет получать информацию с Google Keyword Planner. Этот инструмент доступен для создания Adword-овых компаний и доступ к нему есть, если есть Adword аккаунт. Инструмент очень мощный, Гугл постарались на славу, однако довольно неплохо защищен от автоматического парсинга контента и достаточно тяжеловесен.  Но все же если очень захотеть то все можно сделать. Вот что у меня получилось :
скриншот сбора ключевых слов с Google Keyword Planner через Human Emulator

Для того чтобы создать этот сборщик, я создал класс CGoogleKeywordPlanner, производный от CBaseWebAPI (как и у всех предыдущих сборщиков) который представляет особенности самого сбора и прописал в нем как заходить, логиниться, собирать и сохранять слова . Кроме того в классе CInDataFile, который используется для получения запросов из файла-источника я добавил переменную $items_step, которая указывает сколько слов за раз нужно выдавать из этого источника. Вот в принципе и вся работа. Немного пошаманив с тем как правильнее добратся до нужных элементов и как организовать процесс сбора я пришел к следующему алгоритму:
  • Заходим в адворды, при этом логинемся если это необходимо.
  • Далее переходим на инструмент - оценки объема поиска.
  •  Создаем файл с 800 слов, которые загружаем в инструмент.
  •  После этого переходим на закладку и идеи ключевых слов и качаем полученные файлы по кнопке Download.
  •  Далее полученный файл добавляем к файлам результатов
  •  Переходим к следующему шагу
В результате имеем сборщик ключевых слов, попутно собирающий еще среднее число запросов в месяц а также цены в Гугл Адворд по заданным словам. Эта очень полезная информация. На основе нее можно много чего сделать интересного. Например подобрать тематику для сайта и бизнеса. Подобрать рекламные слова для своей компании в Адвордах или Директе, а также различные другие задачи для которых нужны списки ключевых слов с ценами и популярностью.
скриншот результатат сбора данных с Google Keyword Planner через XWeb Human Emulator
Выводы : 
Таким образом получился более менее стабильный сборщик ключевых слов, популярностей и цен на них для Google Keyword Planer. За сутки может получить несколько сотен тысяч данных по поисковым запросом, особенно интересно среднее число поисков в месяц (популярность) и цена за слово в адвордах. Хочу подчеркнуть что в сборщике введены паузы для избежания бана, а также для его работы нужен логин с паролем для адвордов.  Также код сборщика основан на использовании Human Emulator в режиме эмуляции браузера.  Хочу еще подчеркнуть что информацию о том где взять поисковые запросы и ключевые слова можно найти здесь.
Материалы :
Как всегда весь исходный код по этой статье можно скачать здесь. Руководство «Как запустить этот и другие PHP скрипты с этого сайта» всегда можно найти здесь. Где взять платные и бесплатные прокси сервера, можно найти здесь. А где взять поисковые запросы и ключевые слова можно найти здесь. Пожелания и предложения по коду и сотрудничеству можно присылать на почту или в комментарии.

среда, 18 декабря 2013 г.

Сборщик слов с Яндекс.Вордстат

В прошлых статьях я сделал обзор функционала программы Human Emulator. В этой статье мы напишем сборщик, который будет собирать информацию с Яндекс.Вордстат в режиме эмуляции браузера. Для многих сайтов режим эмуляции браузера это практически единственный доступный вариант для их парсинга. За основу берем классы, из сборщиков поисковых подсказок. Потратив около трех дней на различные эксперименты (отлаживание устойчивости работы, подбор пауз, и вычисление всех моментов приводящих к бану) я получил рабочий код для сбора ключевых слов с Яндекса. Кроме того этот инструмент еще сохраняет число запросов в месяц по Яндексу, что очень помогает в составлении семантического ядра и оценки посещаемости сайта. Т.с одним махом мы получаем слова и данные по ним.
скриншот сбора поисковых подсказок с Яндекс.Вордстат на основе Human Emulator

Для того чтобы создать этот сборщик я добавил папку Templates из последней версии хуман эмулятора и подключил его к проекту. Далее создал класс CYandexWordstat, производный от CBaseWebAPI и слегка его переделал, чтобы базовый класс поддерживал много страничный сбор по одному запросу ( функция load_next_page и переделал функцию get под многостраничный сбор ). Сборщик ключевых слов работает следующим образом : для начала скрипт переходит на Yandex.Wordstat, далее логинимся в учетную запись Яндекса. После этого читаем и вводим текущий запрос из файла входных данных. Далее сохраняем полученные данные и если есть возможность нажимаем кнопку следующей страницы для сбора следующей порции подсказок по заданному запросу. И так пока не получим все страницы. Если в процессе работы выскакивает капча или диалог логина, то скрипт или становится на паузу или обрабатывает эту ситуацию. Также если происходят ошибки сервера и т.п вещи то скрипт это все отрабатывает. И в результате работы мы получаем следующие результаты :

скриншот результатов сбора ключевыхс слов с Yandex.Wordstat
Вывод :
В результате у нас получился стабильный сборщик поисковых запросов с Яндекса. В сутки такой сборщик проходит около 3000 запросов, что дает на выходе порядка нескольких сотен тысяч ключевых слов с оценкой запросов в месяц по Яндексу. Этого вполне достаточно например для начального составления семантического ядра сайта. Также мы увидели что использование Хуман Эмулятора в качестве эмулятора и автоматизатора браузера вполне подходит для решения задач сбора данных с интернета.
Материалы :
Как всегда весь исходный код по этой статье можно скачать здесь. Руководство «Как запустить этот и другие PHP скрипты с этого сайта» всегда можно найти здесь. Где взять платные и бесплатные прокси сервера, можно найти здесь. А где взять поисковые запросы и ключевые слова можно найти здесь. Пожелания и предложения по коду и сотрудничеству можно присылать на почту или в комментарии.

пятница, 13 декабря 2013 г.

Human Emulator и объекты для работы с окнами

В этой статье я рассмотрю последнюю категорию объектов Human Emulator'a, а затем перейду к созданию сборщиков использующих Хуман Эмулятор для сбора ключевых слов с различных веб источников. Итак категория PHP объектов WINDOW :
скриншот справки по категории Window для PHP объектов Human Emulator

Как видим здесь собраны объекты для управления окнами как HumanEmulator'a так и всей системы в целом. Условно можно их разбить на несколько подкатегорий:
Управление окнами и работой Human Emulator'a :
  • app – управление работой приложения. Этот объект позволяет управлять внешним видом самого приложения и содержит следующие возможности :
    • вызов различных диалогов-вопросов для ввода исходных данных в скрипт
    • диалоги ручного распознавания каптчи для ввода капчи в скрипт без использования сервисов распознания каптч
    • управление видимыми параметрами эмулятора (размер окна хумана, позиция, полноэкранный режим, управление треем и т.п)
    • управление ходом выполнения (команды паузы,выгрузки и рестарта )
    • получение внутренней информации (текущий порт, код инсталяции, версия, путь к скрипты и программе и т.п)
    • получение внешней информации (например получить файл с компьютера на котором работает хуман )
    • запуск и останов внешних программ (запуск bat файла,другого PHP скрипта, внешней программы, остановка процесса)
    • управление прогрессом в статус баре (для того чтобы видеть ход выполнения скрипта)
  • debug – управление отладкой скриптов. Объект для работы с панелью отладки и различными отладочными парметрами, содержит:
    • работу с отладочной панелью (работа с закладками их содержимым на отладочной панели)
    • текстовые нотификации (диалоговое окно и всплывающее уведомление - для сообщений о работе скрипта)
    • информация о памяти и ресурсах, занимаемых программой, а также функцию оптимизации памяти
    • вспомогательные функции (информация о путях к текущему скрипту и отладочные хуки)
Получение и установка информации системы :
  • windows – управление оболочкой Windows. Содержит функции получения и задания системной информации.
    • получение информации о Windows (имя, версия, билд, сервис пак, платформа)
    • получение информации о железе и компе (название процессора, имя пользователя и название компьютера)
    • получение параметров разрешения экрана
    • установку параметров разрешения экрана
Управление любыми внешними программами :
  • window – работа с окнами других приложений. Этот объект позволяет выполнять операции с другими программами, запущенными на том компе что и хуман:
    • получает информацию по всем открытым окнам в системе
    • получает информацию по всем дочерним окнам к данному окну
    • выполняет различные стандартные диалоги встроенного браузера (загрузка,выгрузка,ввод данных)
    • получает прямые интерфейсы к окнам с заданными параметрами
    • получает объект-список прямых к интерфейсов к окнам с заданными параметрами
  • windowinterface – прямой интерфейс к окну Windows. Данный объект по сути связь между пхп и реальным окнам в системе в которой запущен хуман эмулятор:
    • управление окном (задание текста,видимости, позиции, размеров и т.д)
    • получение других окон (получает интерфейсы и списки интерфейсов дочерних, родительских, следующих и предыдущих и т.д окон )
    • получение свойств окна (текст,номер, стиль, класс,процесс ID и т.д)
    • получение расположения и размеров окна
    • проверка состояния окна (существует, видимо, дочернее,с фокусом и т.д)
    • эмуляция мыши в окне (движение, щелчки, нажатия и отжатия и т.п.)
    • эмуляция клавиатуры в окне (ввод строк, нажатие и отжатие клавиш,смена языка ввода и т.п)
  • windowinterfaces – список прямых интерфейсов к окнам Windows. Позволяет выполнять операции сразу с несколькими окнами.
    • функции получения отдельных окон и работа с ним как с отдельным окном
    • позволяет вызвать весь функционал что есть для каждого окна за один раз, получив результат выполнения в массив
Выводы:
Таким образом на основании пяти предыдущих статей, опубликованных на x-datas.com  мы видим что Human Emulator - идеально подходит для задач сбора данных с интернета и позволяет в режиме эмуляции браузера ходить по страницам сайта и получать то что нам нужно с них.  Широкие возможности во всех смыслах позволяют нам сделать сборщики данных (и не только ) практически с любых интернет ресурсов. Чем мы и займемся в следующих статьях. Будем все также колупать тему сбора ключевых слов. Пока я писал эти статьи мне удалось отладить сборщик подсказок ключевых слов с Yandex.Wordstat. В следующей стаье я опубликую его сописанием и теми данными что успел собрать.

Human Emulator и объекты для работы с Интернетом

В этой статье я опишу какие возможности есть у Хуман Эмулятора для работы с Интернетом. За это отвечает категория PHP объектов, называемая WEB. Условно поделю их на несколько подкатегорий:
скриншот хелпа по категории WEB для XWeb Human Emulator

Объекты для работы с браузером и веб-страницей
  • browser – управление встроенным браузером. Это основной объект для эмуляции работы в браузере. Содержит массу возможностей:
    • навигация, проверка статуса статуса навигации
    • работа с закладками (в каждой закладке - свой браузер)
    • получение и установка системных параметров (модель браузера, его версия, юзер агент, а также папки куков и кэша)
    • получение и установка визуальных параметров (размер браузера и страницы, позиции скролов)
    • получение и установка контентных параметров (наличие картинок, видео,фреймов,java,java scripts и т.д)
    • работа с JS (включать и выключать, выполнять встроенные и произвольные JS скрипты)
    • работа с прокси серверами (задать прокси, снять прокси и получить текущий прокси)
    • работа с кукисами (установка и получение )
    • работа с popup страницами
    • работа с сообщениями браузера
    • работа с окнами авторизации браузера
    • работа с диалогом загрузки и выгрузки файлов
    • работа с акцептами и реферерами
    • выполнение встроенных команд браузера (сохранение страницы, печать страницы, смена масштаба и т.п ...)
    • выполнение POST и GET запросов
    • проверки статуса соединения
  • webpage – работа с текущей веб страницей. Этот объект нужен для обработки и получения содержимого веб страницы. Позволяет делать следующее:
    • работать с телом страницы (позволяет получать разные части страницы а также заменять страницы в браузере)
    • получать информацию по текущей веб-странице (кодировку, активный элемент,урл,домен, исходник и т.п)
    • также содержит много других полезных функций (сохранение страницы , скриншот страницы , поиск координат по рисунку и многое другое)
Как видно эти два объекты уже сами по себе достаточно мощные средства управления браузера. Но есть еще и другие, следующая подкатегория объектов это объекты доступа к сервисами распознавания капч.
Объекты для доступа к сервисам распознавания капч:
  • anticaptcha – распознование капчи используя сервис AntiGate.com
  • ripcaptcha – распознование капчи используя сервис RipCaptcha.com
  • evecaptcha – распознование рекапчи используя сервис Eve.cm
  • bypasscaptcha – распознование капчи используя сервис bypasscaptcha
  • captchabot – распознование капчи используя сервис captchabot.com
Как видно из названий добавить тут нечего, разве что каждый объект отвечает за свой сервис, на входе передается картинка каптчи и ключ сервиса, а на выходе имеем результат распознания каптчи или людьми или в полуавтоматическом режиме. За каждое такое распознание с нас взимается небольшая сумма денег, обычно 2-3 бакса за 1000 каптч. Хочу отметить только работу сервиса антигейт, на мой взгляд - лучший сервис из всех, хотя бывает загружен, и тогда лучше использовать их все вместе.
Объекты для работы с заданными протоколами и сервисами Интернета:
  • connection – управлением соединением с интернетом. Объект позволяет следующее:
    • получение параметров текущего соединения (модем, сеть, есть инет или нет и т.д)
    • получение локального и реального ай-пи адреса
    • работа с Ethernet (запускать и отключать заданные сетевые соединения)
    • работу с RAS (управление модемными соединениями - логин, перезапуск)
  • ftp – работа с фтп. Позволяет работать с фтп соединением и может следующее :
    • подсоединятся и отсоединяться от фтп
    • работать с фтп папками
    • работать с фтп файлами
    • другие полезные фтп команды
  • mail – работа с почтой. Данный объект работает с POP3 и SMTP соединениями, и может следующее
    • соединятся по POP3 и SMTP
    • управлять параметрами POP3 и SMTP соединений
    • получать количество писем на сервере и получать эти письма по POP3
    • по POP3 получать различную информацию о письме с сервера, не удаляя само письмо (дата, тема, от кого, размер и т.п.)
    • отсылать сообщения по SMTP в текстовом и HTML видах
  • proxycheker – управление прокси - чекером. Этот объект служит для  проверки работоспособности прокси серверов и может делать следующее :
    • работа со списком прокси (добавление, добавление из файла, убирание дубликатов и редактирование)
    • получение информации по списку прокси и других различных характеристик по каждому из прокси адресов
    • собственно управление самим процессом тестирования (запуск, останов, задание качества и скорости тестирования)
  • raw – управление raw потоками браузера. Этот объект служит для получения информации об обмене браузера с сервером и может следующее
    • включать и выключать слежение за различными типами протоколов
    • получать последнюю запрошенную информацию браузером (урлы и заголовки)
    • получать последнюю отвеченную сервером информацию (урлы и содержимое)
    • очищать последнюю информацию
    • вмешиваться в процесс запроса информации и ее получения
Т.е эта подкатегория позволяет решать уже ряд очень специфических задач, возникающих в процессе сбора данных. Ну а последняя подкатегория - это вспомогательная.
Вспомогательные объекты :
  • seo – набор функций, связанных с SEO. Данный объект позволяет получать карту сайта, а также внешние и внутренние ссылки. Весьма вспомогательный.
  • submitter – вспомогательный объект для сабмита информации в веб. Этот объект более нам интересен с точки зрения постинга в веб. Хотя иногда чтобы что-то собрать с веба надо туда что-то запостить, например те же регистраторы аккаунтов. Содержит следующий функционал
    • получение случайных географических данных (страна, регион, город, улица)
    • получение случайных ников, имен и фамилий
    • получение случайных строк и чисел
Т.е как видим из описания функционала, Хуман Эмулятор умеет весьма много. И это мы обязательно будем использовать создавая наши скрипты сбора данных. А в следующей статье я расскажу про категорию Window, тут собраны объекты, помогающие хуман эмулятору взаимодействовать с Windows а также управлять любыми другими сторонними программами и окнами.

Human Emulator, и базовые системные Операции

Этой статьей я продолжу описание использования XWeb Human Emulator для решения задач сбора данных. Сегодня поговорим о функционале, предоставляемом PHP объектами из категории SYSTEM:
объекты System для Human Emulator
  • clipboard – работа с буфером обмена. Данный объект полезен для обмена информацией через буфер обмена. Например для того чтобы скопировать информацию из файла в заданный элемент браузера или даже в любое другое окно системы.
  • file_os – управление локальными файлами. Данный объект используется для работы с файлами в файловой системе. Как для системных операций, например копирование файла, перемещение файла, так и для получения информации о фале, времен доступа к файлу, а также работы с его атрибутами.
  • firebird – работа с локальной базой данных Firebird - позволяет работать с любой Firebird базой, получать и добавлять записи, а также выполнять любые другие SQL запросы.
  • folder - управление локальными папками - этот объект позволяет работать работать с расположением папки на диске, например копировать, переносить и удалять папки целиком. Также получать любую информацию по каждой из папок, включая атрибуты и даты доступа.
  • msword – работа с вордом - позволяет управлять приложением MS Word.  Есть функционал по созданию и открытию документов. А также функционал по добавлению различных видов текста. Также есть возможность по созданию таблиц.
  • sound – управление звуком - этот объект служит для подачи звуковых сигналов и проигрывания мелодий. Полезен для организации сигнализации в работе скрипта.
  • textfile – функционал для работы с текстовыми файлами. Этот объект служит для организации работы с текстовыми файлами, содержит широкий набор функций по получению информации, управлению, преобразованию и другими операциями необходимыми нам для организации сбора данных.
Про следующие два объекта я хочу сказать что благодаря этим объектам Хуман полностью позволяет получать контроль над мышкой и клавиатурой. Это нужно чтобы производить более глубокую эмуляцию действий пользователя, фактически неотличимую на уровне железа.
  • keyboard – эмуляция клавиатуры. Объект позволяет как полностью эммулировать клавиатуру, так и на уровне событий. Есть эмуляция ввода целых строк, нажатия и отжатия управляющих и обычных клавиш. А также возможности по смене языка ввода.
  • mouse – эмуляция мыши. Объект позволяет полностью эммулировать мышь, а также эмулировать события мыши для приложения хумана. Есть возможности управления щелчками, нажатиями и отжатиями правой и левой кнопки мыши, управление перемещением мыши, а также эмуляция работы колеса мыши.
Вывод
Как видим объекты XWeb Human Emulator из категории SYSTEM существенно облегчают нам жизнь в решении задач сбора данных. Особенно если учесть что эти команды могут быть выполнены как локально (на домашней машине) так и удаленно (на любой другой машине, чей ай-пи адрес известен и на которой запущен хуман). Все это нам пригодится в написании сборщиков, которые будут эмулировать работу браузера, нажимать ссылки и вести себя как обычный интернет пользователь.  А в следующей статье я опишу следующую категорию объектов хуман эумлятора. Категория WEB - функционал для работы с интернетом и сетью.

Human Emulator и работа с элементами HTML

Если при навигации на определенную страницу, элементы на выдаваемой странице строятся динамически, то Human Emulator - идеальное решение для таких случаев.  В этой статье я вкратце опишу как Human Emulator использовать для работы элементами HTML страницы.

описание XHE объектов из категории DOM

1. DOM объекты заданного типа
За это отвечают объекты из категории DOM, -  каждый из объектов  (за исключением интерфейса и списка интерфейсов) отвечает за работы с элементами заданных типов. Например $anchor - описывает за работу со ссылками на текущей веб странице, а $image - за работу с картинками, и так по каждому из общеупотребляемых тэгов.
Все эти объекты поддерживают следующие операции (Базовый функционал):
+ специфические операции для каждого объекта, например
для картинки ($image), это будет
а для таблицы ($table) :
И так по каждому из объектов. Как видим что возможностей более чем достаточно, можно напрямую управлять и получать как свойства DOM элементов так и эмулировать события мыши и клавиатуры для отправки их в заданный элемент.  Это уже позволяет нам иметь полный доступ и управления всеми HTML элементами.
2. DOM Интерфейсы
Но кроме того XHE позволяет напрямую подключатся к DOM интерфейсам. Для этого используются следующие объекты :
  • interface – прямой интерфейс к элементу страницы
Это нужно для того чтобы с максимальной эффективностью производить несколько операций с одним и тем же элементом или для более объектного подхода при решении задачи. Здесь объект interface - представляет связь с заданным DOM объектом, для чего используются функции установки связи :
А уже после установки связи с объектом могут быть произведены операции следующих типов :
3. Списки DOM Интерфейсов
  • interfaces – список прямых интерфейсов к элементам страницы
Этот объект содержит в себе сразу несколько DOM интерфейсов и позволяет одновременную работу сразу с ними всеми. Например чтобы сразу получить все ссылки с заданными классами или с заданными внутренними текстами.  Для получения списка интерфейсов можно воспользоваться следующими функциями :
После отработки мы получим объект со списком всех интерфейсов, удовлетворяющих заданным условиям. А уже после этого мы можем вызывать все те функции что есть отдельно у простого интерфейса и получать результат выполнения в массив, т.е каждый интерфейс даст собственную ячейку в массиве результатов.
Вывод
На этом все про категорию объектов DOM, которыми можно управлять встроенным в XHE браузером.  Как видно из вышеприведенного описания, функционала для того чтобы работать с элементами html страницы более чем достаточно, т.с на любой вкус и цвет. Даже кто плохо знаком с программирование может использовать объекты из первой категории которые по заданным параметрам выполняют то что от них требуется, кто хорошо знаком с ООП - тому рекомендуется использовать интерфейсы и списки интерфейсов, чтобы код получался легко читаемый и быстро переносимый. На этом пока все дальше я рассмотрю объекты из категории Web, System, Window, каждый из которых призван решать определенные задачи в сфере автоматизации сбора данных в нашем случае.

Использование Human Emulator для сбора данных

Часто в процессе сбора данных, одного запроса урла через CURL недостаточно, например нужна авторизация с поддержкой флэша, данные появляются на странице через JS или еще либо как-то. Для этого существуют программы, которые позволяют автоматизировать браузер. (Эммуляторы и Автоматизаторы браузера) Т.е по сути они предоставляют возможность управления браузером посредством скриптов. Я остановлюсь на одной из них более подробно. Итак Human Emulator - система для веб автоматизации.

скриншот работы хуман эмулятора в режиме сбора ключевых слов

Описание программы Human Emulator (основное) :
  • программа представлена в виде интегрированной среды для разработчика (IDE)
  • решаемые задачи очень многогранны, фактически все что можно сделать в браузере все делается программой
  • язык на котором пишутся скрипты, управляющие работой браузера - PHP
  • в программе имеется встроенный редактор записи скрипов, упрощающий решения автоматизации
  • есть средства позволяющие просматривать элементы страницы и их свойства в виде различных представлений  (Дерево, Инспектор, Список и т.д)
  • есть панель отладки с возможностью просмотра всей необходимой информации в том числе и RAW обмен браузера
  • есть возможность открывать несколько браузеров а также менять их модели (IE от 6 до 11)
  • имеются средства облегчающие навигацию как в любом браузере (Панель Навигации, Фавориты, История и т.д)
  • возможность многозадачного выполнения скриптов (т.е запуск нескольких экземпляров программы, каждый со своей задачей)
Как видим Human Emulator для решения наших задач сбора - просто идеальное решение . Есть много мест в инете, откуда надо собрать информацию (например по тем же поисковым запросам) без эмуляции в браузере ну никак нельзя. Например
В следующих статьях я напишу скрипты, что собирают ключевые слова и данные о посещаемости с этих источников. А пока напомню где скачать базы Поисковых запросов и получить списки ключевых слов, если кого интересует этот вопрос.