WBApp (только для ULTIMATE версий)

ВНИМАНИЕ!!! Для корректной работы WBApp, требуется иметь установленный Microsoft Internet Explorer не ниже 11 версии!!! (скачать его вы можете на сайте Microsoft.com в разделе «загружаемые файлы»)
Парсить с использованием WBApp НАСТОЯТЕЛЬНО рекомендуется только в 1 поток!

WBAppWBApp — приложение, созданное для Content Downloader, которое позволяет парсить сайты с использованием Internet Explorer Windows (он будет выполнять скрипты на web-страницах). В WBApp можно создать список событий, который будет выполняться при парсинге. Например, можно имитировать клики по элементам web-страниц (нажимать кнопки и прочее), выполнять прокрутку страниц вниз, заполнять текстовые формы и многое другое…

WBApp идет в комплекте с Content Downloader и вызывается соответствующей кнопкой на панели инструментов главного окна программы (Content Downloader).

Content Downloader (создание и редактирование проекта WBApp)

Напоминаем, что парсить через WBApp можно с любым типом лицензии, но использование списка событий WBApp возможно только с типом лицензии ULTIMATE! Обладатели менее продвинутых версий могут протестировать WBApp в полной мере (в режиме настройки WBApp).

ВАЖНО: Значительное ускорение парсинга с использованием библиотеки Internet Explorer (WBApp)


Знакомство с WBApp:




Описание дополнительных макросов списка событий:

[GETHTML] — добавит текущий код страницы к результату парсинга. Если вызывать этот макрос несколько раз, например, в цикле, то, каждый раз, к результату будет добавляться текущий код web-страницы (на момент срабатывания макроса [GETHTML]). Его полезно применять в случае парсинга, например, нескольких страниц выдачи поисковика (чтобы при перелистывании на следующую страницу, результат парсинга не заменялся, а к нему добавлялся код следующей страницы выдачи).

[SCROLLDOWNTHENRETURN] — прокрутит web-страницу в самый низ. Если страница будет прокручена (то есть положение скроллбара изменится), то прогресс выполнения списка событий будет возвращен в самое начало. Если вставить [SLABEL], например, в середине списка событий, то прогресс будет возвращен не в начало списка, а к [SLABEL]. Этот макрос полезен, например, при парсинге комментариев или постов, которые подгружаются автоматически при пролистывании web-страницы вниз.

[SCROLLDOWN] — прокрутит web-страницу в самый низ.

[WAIT]:2000 — процесс выполнения списка событий приостановится на 2000 мс (2 секунды). Указать можно любое время, например 5000 (ожидать 5 секунд). Этот макрос можно применять в случае, когда необходимо дождаться загрузки определенных данных web-браузером.

[REPEAT] события
[/REPEAT]
— повторит события определенное (указанное в настройках) количество раз.

[HTMLPOINT] события
[HTMLPOINTCHECK]
— на [HTMLPOINT] текущий код web-документа будет скопирован в память WBApp. На [HTMLPOINTCHECK] текущий код (на момент выполнения [HTMLPOINTCHECK]) будет сравниваться с зафиксированным ранее кодом (на момент выполнения [HTMLPOINT]) и, если, старый и новый коды не совпадут, то прогресс выполнения списка событий вернется к [HTMLPOINT]. Этот макрос полезен, например, когда вам нужно спарсить все страницы выдачи поисковика или сайта (количество которых вы не знаете или оно может меняться).


Создание события клика по элементу WEB-страницы:

WBApp


Прокрутка к определенным элементам WEB-страниц (событие [CLICK] с параметром [ET_SCROLL], на примере блока выдачи результатов поиска в 2GIS):




Поиск HTML-элемента для клика сразу по двум атрибутам:

Иногда требуется кликнуть, например, по кнопке «показать еще», которая не имеет ни одного уникального атрибута. Почти всегда можно подобрать уникальное сочетание двух атрибутов, которое встречается только у нужного нам элемента. Например: classname и offsetwidth, которые имеют значения b-form-button__click и 101 (соответственно).

Для поиска элемента сразу по двум атрибутам необходимо:
— создать событие клика по первому атрибуту (как обычно)
— Нажать ctrl+e (редактировать список событий в виде текста) и дописать к событию клика [SECOND]offsetwidth:101 (где offsetwidth — название второго атрибута, а 101 — его значение).

1
[CLICK][classname][N]0[/N][FULL]:b-form-button__click[SECOND]offsetwidth:101

Следует отметить, что [N]0[/N] нужно сделать равным нулю (как и указано тут)!!!


Пример настройки WBApp для имитации кликов по кнопкам типа «показать еще» (на примере ответов мейл ру):

[HTMLPOINT] — загружает в память программы текущий код web-документа
[CLICK][classname][N]0[/N][FULL]:btn btn-more btn-blue — кликает по кнопке «показать еще» (кнопка с классом btn btn-more btn-blue)
[WAIT]:2000 — ждет две секунды
[SCROLLDOWN] — прокручивает страницу вниз
[HTMLPOINTCHECK] — проверяет, изменился ли код web-документа (сверяя текущий код со старым, взятым в момент выполнения [HTMLPOINT]). В случае, если код изменился, то происходит возврат к [HTMLPOINT]


Распознавание текста капчи с помощью сервиса Antigate:

Вставка группы макросов для распознавания капч происходит при клике на соответствующую кнопку в редакторе списка событий (ctrl+e):

1
2
3
4
5
6
7
8
9
10
11
12
13
[CAPCHA]
SIGNATURE=сюда вставить признак капчи (часть кода WEB-документа, которая присутсвует только тогда, когда есть капча)
[WAIT]:1500
KEY=сюда вставить ваш ключ сервиса Antigate
сюда вставить событие клика по картинке капчи (отправка скриншота капчи в сервис Antigate)
RUS
NUMERIC
RETURN
DO:
сюда вставить действия, которые нужно выполнить после получения текста капчи (вставка текста капчи в соответствующее поле и клик по соответствующей кнопке)
для вывода текста капчи используйте [CAPCHAVALUE]
[WAIT]:1500
[/CAPCHA]

Где:
SIGNATURE — признак наличия капчи в коде WEB-документа (если он не будет найден, то дальнейшие процедуры распознавания выполняться не будут)
KEY — ваш ключ сервиса Antigate (получить его нужно в личном кабинете сервиса Antigate.com)

RUS — параметр, который направит картинку на распознавание русскоговорящему работнику Antigate (этот параметр можно удалять)
NUMERIC — параметр, который определяет капчу, как числовую (состоящую только из цифр)(этот параметр можно удалять)

DO — после этого оператора (и до оператора [/CAPCHA]) выполняются события, которые нужно осуществить после распознавания картинки. Обычно это вставка [CAPCHAVALUE] (полученного текста капчи) в соответствующее поле и клик по соответствующей кнопке

RETURN — при наличии этого параметра, после выполнения процедуры распознавания капчи, прогресс выполнения списка событий будет возвращен в самое начало (или до первого встретившегося [CAPCHALABEL]. Потом, когда снова наступит событие [CAPCHA], будет производиться повторная проверка SIGNATURE. Если SIGNATURE опять будет найдена в коде WEB-документа, будет произведен повторный запуск процедур распознавания капчи (2 попытки).

Пример использования:

1
2
3
4
5
6
7
8
9
10
11
12
[CAPCHA]
SIGNATURE=<span class="capcha">введите текст картинки
[WAIT]:1500
KEY=d21978fa24d38712c4345783f84rfd
[CLICK][id][N]0[/N][FULL]:capchaimg
RUS
NUMERIC
DO:
[PASTE][offsetwidth][N]0[/N][FULL]:48[TEXT]:[CAPCHAVALUE]
[CLICK][classname][N]0[/N][FULL]:submitbutton
[WAIT]:3500
[/CAPCHA]



Вызов WBApp из шаблона вывода Content Downloader при парсинге (с возможностью передачи множества текстовых данных):

Важное примечание 1: Если вам нужно вернуть в Content Downloader данные из запущенного макросом [WBAPP] WBApp, то пропишите после названия проекта WBApp (в макросе шаблона вывода) [GETRESULT]. Например:

1
[WBAPP(C:\Users\Sila\Desktop\CDDATATEST2.wbapp[GETRESULT])][CDDATA:1]данные[/CDDATA][/WBAPP]

Тогда код документа, который будет существовать после работы списка событий WBApp, вставится в шаблон вывода Content Downloader на место вызова макроса [WBAPP]. Если вам нужно вернуть из WBApp не весь код WEB-документа, а какую-то его часть, то в конец списка событий WBApp добавьте примерно следующее:

1
[GETHTML]:начало{get}конец|{get}

Где между «начало» и «конец» в текущем коде WEB-документа WBApp содержатся нужные данные для возврата в Content Downloader.

Важное примечание 2: Если добавить [ONETHREAD], то WBApp будет запускаться только в одном потоке (это важно, например, когда используете функцию автоматического ввода текста с капчи):

1
[WBAPP(C:\Users\Sila\Desktop\CDDATATEST2.wbapp[GETRESULT][ONETHREAD])][CDDATA:1]данные[/CDDATA][/WBAPP]

Важное примечание 3: Макрос [WBAPP] выполняется практически после всех других макросов шаблона вывода. Если вам, например, нужно вызвать WBApp до других макросов шаблона вывода, используйте [WBAPP_F]:

1
[WBAPP_F(C:\Users\Sila\Desktop\CDDATATEST2.wbapp[GETRESULT][ONETHREAD])][CDDATA:1]данные[/CDDATA][/WBAPP_F]

Важное примечание 4: Если вам нужно принудительно открывать какую-либо WEB-страницу из Content Downloader (а не ту WEB-страницу, что сохранена в проекте WBApp), то пропишите ее адрес после символа вертикальной черты следующим образом:

1
[WBAPP(C:\Users\Sila\Desktop\CDDATATEST2.wbapp|http://SBFactory.ru/?p=600[GETRESULT][ONETHREAD])][CDDATA:1]данные[/CDDATA][/WBAPP]

Важное примечание 5: Если требуется всегда показывать окно WBApp при парсинге (вне зависимости от опции «показывать WBApp при парсинге» в окне ctrl+h), то добавьте оператор [SHOWWBAPP]:

1
[WBAPP(C:\Users\Sila\Desktop\CDDATATEST2.wbapp|http://SBFactory.ru/?p=600[GETRESULT][SHOWWBAPP][ONETHREAD])][CDDATA:1]данные[/CDDATA][/WBAPP]

Важное примечание 6: Если требуется НЕ показывать окно WBApp при парсинге (вне зависимости от опции «показывать WBApp при парсинге» в окне ctrl+h), то добавьте оператор [HIDEWBAPP]:

1
[WBAPP(C:\Users\Sila\Desktop\CDDATATEST2.wbapp|http://SBFactory.ru/?p=600[GETRESULT][HIDEWBAPP][ONETHREAD])][CDDATA:1]данные[/CDDATA][/WBAPP]



Выбор элементов выпадающих списков:




Выполнить определенные события, если код WEB-документа содержит/не содержит определенный текст или код:

1
2
3
4
5
6
7
8
9
10
11
12
13
[IFDOCHAS]:любой текст
События внутри [IFDOCHAS]...[/IFDOCHAS] выполнятся, если "любой текст" содержится в текущем коде WEB-документа (для обозначения переносов строк в "любой текст" используйте оператор {br})
Например, вот внутренние события:
[SCROLLDOWN]
[WAIT]:2000
[/IFDOCHAS]
 
[IFDOCHASNOT]:любой текст
События внутри [IFDOCHASNOT]...[/IFDOCHASNOT] выполнятся, если "любой текст" НЕ содержится в текущем коде WEB-документа (для обозначения переносов строк в "любой текст" используйте оператор {br})
Например, вот внутренние события:
[SCROLLDOWN]
[WAIT]:2000
[/IFDOCHASNOT]



Выполнить определенные события, если событие клика сработало/не сработало:

1
2
3
4
5
6
7
8
9
событие клика по кнопке
[IFCLICKED]
действия списка событий, которые нужно выполнить, если клик состоялся
[/IFCLICKED]
 
событие клика по кнопке
[IFNOTCLICKED]
действия списка событий, которые нужно выполнить, если клик не состоялся
[/IFNOTCLICKED]

Также возможно использовать совместно с с событием [REPEAT], чтобы вернуться, например, в начало списка событий, если предшествующий клик по кнопке состоялся или не состоялся

1
2
3
4
5
6
7
[REPEAT]
событие клика по кнопке
[IFNOTCLICKED]
действия списка событий, которые нужно выполнить, если клик не состоялся
[WAIT]:200
[/REPEAT]
[/IFNOTCLICKED]
[/REPEAT] вернет прогресс выполнения к [REPEAT] (максимальное количество возвратов выставляется в настройке функций и макросов (соответствующая кнопка на панели инструментов WBApp))


Передача текстовых переменных из Content Downloader в WBApp через текст ссылок:




Дополнительные материалы:

Рендеринг (создание изображений) элементов WEB-страниц с помощью WBApp
Имитация нажатий кнопок мыши и клавиатуры в WBApp
Передача адресов WEB-страниц из WBApp в Content Downloader (событие WBApp [GETCURRENTURL])


Решение возможных проблем:

— Если, при парсинге из Content Downloader, WBApp ИНОГДА насовсем «зависает» (останавливая процесс парсинга) и находится в активных процессах системы (в диспетчере задач), то можно выставить максимальное время работы процесса wbapp.exe. Нажмите ctrl+h и в поле «завершить процесс через (МС)» выставьте нужное время, например — 60000 (60 секунд). Тогда каждый экземпляр WBApp будет закрываться принудительно через 60 секунд после его запуска и будет происходить повторная загрузка того-же элемента

— Если иногда WEB-страницы не догружаются или не загружаются вовсе, то увеличьте «тайм-аут проверки загрузки WEB-документа» в настройке запросов программы (нажать ctrl+h в Content Downloader). Убедитесь, что парсите в 1-2 потока (лучше в 1 поток, так как на каждый поток запускается отдельный Internet Explorer)

— Если вы парсите большое количество документов и они перестали загружаться (имеется ввиду парсинг нескольких тысяч WEB-страниц, Internet Explorer просто не рассчитан на это), то необходимо перезапустить ПК


1 Star2 Stars3 Stars4 Stars5 Stars (оценок: 6, средний балл: 5,00)

Загрузка...
Автор: admin, 9 марта 2014
Рубрики: Парсинг
Метки: , ,
30 комментариев к сообщению: “WBApp (только для ULTIMATE версий)”
  1. Сырго:

    Всем привет, если юзерагентов добавить и рабочих проксей + хайд со сменой айпи раз в минуту (или больше)+ ссылки на страницы с паузой входа 1000 мс (или больше), получится ли по тизерам покликать «аля инкогнито»? Понятно что вход будет не по ключу а по адресу…значит не жестить, а «разбавить», например %20 на 100% кликов дейли
    сорри за алчный коммент…

  2. Андрей:

    а антигейт можно подключать? очень надо=)

    • admin:

      Обновление с поддержкой Antigate планируется выпустить на днях. Ждите…

    • admin:

      Content Downloader X версии 10.90 (20.04.2014):

      — Доработан макрос шаблона вывода TOPRICE (теперь он обрабатывает цены, которые содержат в себе несколько точек или запятых, ранее он возвращал пустое значение) — Скажем спасибо господину Kagorec;
      — Несколько доработок.

      WBApp v 1.38

      — Добавлен функционал для распознавания капч (смотрите событие CAPCHA);
      — Добавлен макрос вставки первоначального URL (с которым был произведен запуск WBApp из Content Downloader) — [ORIGINALURL];
      — Добавлено событие [REFRESH] (обновить страницу);
      — Множество доработок.

  3. Евгений:

    Можно привести пример использования макроса [GETHTML], когда нужно вернуть часть кода? Попробовал сделать, как описано, но не получается.

    [GETHTML]:начало{get}конец|{get}

  4. Александр:

    Отличная программа, буду устанавливать.

  5. Клиент:

    Запишите, пожалуйста, видео с авторизацией через WBApp на сайте (желательно соц. сеть типа ОД, ВК, ФБ), а то в руководстве написано: «Действуем аналогично методу, указанному на этой странице http://sbfactory.ru/cd/?p=2132«, а у меня что-то не стыкуется тёплое с мягким.

  6. tremmer:

    Сергей, добрый день.
    Скажите, при вставке значений в текстовые поля их(значения) можно брать из локального файла?

    • admin:

      Здравствуйте.

      Да, например, когда вы вызаваете WBApp из шаблона вывода Content Downloader
      [WBAPP_F(C:\Users\Sila\Desktop\CDDATATEST2.wbapp[GETRESULT][ONETHREAD])][CDDATA:1]данные из файла берутся макросом <FILE=C:\Users\Sergey Zaykovskiy\Desktop\Файлы проектов\shops-urls.txt>[/CDDATA][/WBAPP_F]
      Смотрите выше Вызов WBApp из шаблона вывода Content Downloader при парсинге (с возможностью передачи множества текстовых данных)

      Если сильно надо вставлять данные из файла в WBApp, пишите, постараюсь сделать.

      И в комментариях тут лучше не писать, я их читаю редко. Лучше писать на форум.

      Спасибо!

      С уважением к вам, Сергей.

  7. Слава:

    Здравствуйте! Скажите пожалуйста,а можно ли например при публикации записей в wp (как в вашем видео примере)брать данные заголовка записи и данные текста записи из существующего файла csv на локальном диске, где несколько строчек и несколько колонок и каждая строчка — это одна запись, и две ячейки в строчке — заголовок и текст статьи. нужно брать для каждой записи из одной ячейки — заголовок, а из другой — текст.

  8. Александр:

    Доброй ночи! Можно ли при помощи WBApp спарсить базу такого сайта как miralinks ru или нужно пользоваться другой функцией Content Downloader

  9. Саша:

    WBApp поддерживает серфинг через прокси? В частности прокси с авторизацией и соксы?

  10. MAXiMUS:

    Приветствую.
    Подскажите пожалуйста как можно спарсить участников группы ВК, но не через страницу вк_ком_search? (т.к. здесь отображаются не полный перечень), а в сплывающем окне после клика на странице группы по ссылке «Участники».

  11. denis:

    Здравствуйте.Не подскажите — в WBApp есть возможность с имитировать клик по клавиатуре (стрелка — в право, в лево) на всплывающем окне, на котом WBApp не фиксирует — не видит ни одного элемента?

  12. denis:

    Смотрю тут — Имитация нажатий кнопок клавиатуры и мыши в WBApp есть список НО толи не правильно вставляю!? толи эта фича не работает… не понятно. Уважаемый админ проясните пожалуйста ситуацию (думаю многим будет интересно!)

  13. denis:

    Спасибо за оперативный ответ! Но всё же хоть примерно когда ожидать? (просто ОЧЕНЬ нужно…)

  14. denis:

    огромное СПАСИБО! то что нужно!

Написать комментарий

Вы должны войти чтобы добавить комментарий.

Последние статьи

css.php