Основы настройки программы «Парсер сайтов»

Самостоятельная настройка программы «Парсер сайтов». Основы.

Данная статья не может считаться полноценной инструкцией и руководством к действию для настройки парсера (т.к. была написана достаточно давно человеком, который не имел большого опыта в настройке), но в ней есть ряд моментов, которые могут быть интересны другим людям.

В сегодняшнем уроке мы на практическом примере, научимся автоматически выгружать с сайта интересующие нас данные при помощи программы «Парсер сайтов».

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

Задача: выгружать цены без захода на сайт и просмотра всех страничек.

Для того чтобы настроить выгрузку данных в «касание одной кнопкой», мы заходим в панель надстройки (как установить надстройку смотри http://excelvba.ru/faq) и в разделе «Дополнительно» выбираем пункт «Добавить новый парсер».

В открывшемся окне в графе «Создать (и настроить) новый парсер» вводим произвольное название (пусть это будет «Автомобили с пробегом») и нажимаем кнопку «Создать».

Открывается следующее окно:

Нас пока что не интересует выгрузка никаких файлов с сайта, мы просто хотим видеть на листе Excel цены, поэтому мы ставим галочку «Выполнять подстановку данных в таблицу Excel», а вторую оставляем пустой. Обратите внимание, что наверху появляется дополнительная вкладка «Вывод на лист».

Сохраняем и закрываем окно настроек и наполняем нашу книгу Excel некоторыми данными. Предположим, нас интересуют недорогие автомобили Toyota. Создадим простую табличку, в которой перечислим интересующие нас модели.

Заходим на интересующий нас сайт (пускай это будет http://www.tradein-bc.ru/)

И далее начинается самая интересная и творческая работа. Мы анализируем, каким образом хранится информация на сайте. Щелкаем по ссылкам, в поисках интересующих нас машин.

Приходим к выводу, что на данном сайте достаточно простая структура: предложения по автомобилям сгруппированы на страницах вида:
http://www.tradein-bc.ru/{Марка}/{Модель}/

Вот, например, страница с Auris’ами:

Отлично! Заходим в настройки парсера (кнопка «Настроить» на панели надстроек), переходим на вкладку «Исходные данные»:

Мы помним, что у нас интересующие модели находятся в столбце «B», поэтому выбираем соответствующий столбец:

«Начиная со строки 2» - настройка по умолчанию нам подходит, поскольку в первой строке у нас названия столбцов.
Есть и другие способы получения исходных данных, например, из списка фиксированных значений, в этом случае, настройки бы выглядели вот так:

 

Далее, как нам заставить парсер переходить на нужные нам страницы, и извлекать оттуда нужные данные? Это делается в том же окне, в разделе «Список действий»

Мы помним внешний вид ссылок
http://www.tradein-bc.ru/{Марка}/{Модель}/

Соответственно, первым делом мы должны преобразовать наши данные из столбца «B» в гиперссылки, для этого нажимаем на кнопку «Редактировать список действий …»
 

В появившемся окне, в верхнем правом углу нажимаем кнопку «Добавить действие»

Как видите список действий очень обширен. Возможности программы просто гигантские.

Но для новичков здесь все упрощено - выбираем категорию «Избранные (наиболее полезные)» и первое действие по списку: «Добавить текст до или после». Нажимаем «Выбрать действие».

Это возвращает нас в предыдущее окно, где по центру появляются дополнительные параметры:

 

Как вы уже догадались, нам надо ввести то, что стоит до и после названия модели в гиперссылке. Не забываем, про http://

Будем считать, ссылки у нас уже готовы, теперь нам надо загрузить страницы по этим ссылкам. Добавляем действие (по уже описанному алгоритму) «Загрузить ИСХОДНЫЙ КОД веб-страницы».
Каждое действие имеет мини-подсказку, которая появляется, когда удерживаешь нажатой кнопку «Показать описание». Например:

Как мы видим из подсказки URL берется из предыдущего действия, поэтому в этих настройках мы ничего не меняем.
Давайте проверим, как у нас все получается, а заодно получим нужные данные для дальнейших шагов. Для этого в нижнем окошке введем значение «Auris» и нажмем «Тестировать»

Результат выполнения следующий:

Как видите, «Парсер сайтов» загрузил некий текст длиной почти 40 тысяч символов. Это как раз и есть исходный код нужной нам страницы. Просматривать его в маленьком окошке будет неудобно, поэтому нажимаем, например, «Открыть в Блокноте» .
Далее нам нужно найти в этом файле, где начинается код, посвященный собственно машинам, и каким образом машины отделяются друг от друга. Листаем код и находим интересующие нас строки:

Анализируем ео и понимаем, что каждая отдельная машина заключена в блок <div class=”item”>. Тут же чуть ниже понимаем, что цена заключена в блок <div class=”price”>. Запомним это.

Отступление: теги <div> </div> используются веб-программистами и верстальщиками для форматирования определенных повторяющихся кусков текста, поэтому на многих современных сайтах вы такие блоки сможете найти.

Добавляем в инструкции парсеру 2 действия «Поиск тегов по имени класса», в одном указываем название класса «item», в другом «price».

Второе аналогичное действие:

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

Далее из кода нам надо выделить саму цену автомобиля. Как видно в коде, она заключена между тегами жирного шрифта <B></B>. Добавляем действие «Взять блоки текста между …», задаем параметры.

Так как у нас несколько автомобилей может продаваться, то и значений цены может быть несколько. То есть мы сформируем массив данных (если не знаете, что это такое, воспользуйтесь поиском), с которым будем в дальнейшем работать. Для этого применяется действие "Передать массив целиком в следующее действие". Итого у нас получилось 6 действий:

Сохраняем список действий, переходим на вкладку «Вывод на лист».

Пока что она пустая. Давайте добавим столбец для подстановки данных. Как вы помните в нашей таблице это столбец 3 «C». Щелчком на словах «Название столбца» мы можем вставить название из первой строки таблицы Excel.

Вы помните, что у нас получился массив данных. Теперь нам надо его разбить на отдельные элементы. Добавляем действие «Разбить текстовую строку на массив»

И на вкладке дополнительно, ставим галочку «Выводить массив значений в отдельные столбцы»

Все сохраняем и закрываем. Нажимаем на панели надстройки «Начать загрузку данных».

Почти мгновенно выводится результат. На экране мы видим все ценовые предложения по определенным моделям, что и требовалось получить. В дальнейшем мы можем работать с этой таблицей или настроить выгрузку дополнительных данных. Также можно ввести всевозможные ограничения – например, искать машины только черного цвета или только с АКПП.

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

 

PS Во вложениях Вы можете найти книгу Эксель и настройки парсера из данной статьи. Чтобы узнать, как добавить новый парсер к файлу, смотри http://excelvba.ru/programmes/Parser/AddExistingParser

Вложения:

Комментарии

Очень много книг, да почти все книги и сайты рассказывают ни о чем, информация которая там написана вообще не поможет никогда в жизни, и смысл вообще такое делать и создавать ГС... Бред вообщем.. Мир катится в безну

Андрей, с сайтами спортивных результатов (почти со всеми) в разы сложнее, чем с сайтами другой тематики (где чем-то торгуют)
Сайтов / книг по столь специфической тематике (как взять в Excel данные с сайтов, да еще с таких замороченный сайтов) вы вряд ли найдете.
Те, кто обращается ко мне с такими заказами (уже кучу разных парсеров настроили, под сайты спортивных результатов), - они платят деньги, и получают готовое решение. А вы ж хотите бесплатно всё найти - потому и сложности возникают.

Ничего не получилось с «Открыть страницу в Internet explorer»... Вообще не понимаю как это все работает( И норм сайтов/книг нету, где нормально все объясняют.. Через "добавить из интернета" в самом ексель получается из других сайтов, но информация не обновляется автоматически....

Эх...Как же все сложно...( Ладно, спасибо, буду пробовать

С такими сайтами - всё сложнее, там часто данные скриптами выводятся.
Используйте браузер для работы с этим сайтом (действие «Открыть страницу в Internet explorer» вместо «Загрузить исходный код веб-страницы») — вам так проще будет

Просто не могу понять как добавить вот эту статистику http://24score.com/football/team/england/arsenal/, делаю все так же как написано, но при тесте не показывается вообще ни один div который мне нужен(

Андрей, вы всегда можете заказать настройку парсера, - и всё будет работать как вам надо.

заказы на парсер принимаются в таком виде
http://excelvba.ru/programmes/Parser/order

Ничего не выводится( Не очень четко все объяснено.. После теста сайта, ничего не выдало кроме скрытых скриптов . Плюс в программе не сходятся некоторые параметры(названия их)

Зравствуйте, Евгений
По первому вопросу, - невозможно помочь, не видя, что у вас там настроено.
Одно могу сказать, - как настроено, так и работает. Т.е. если настроить правильно, будет работать как вам надо (а не как сейчас)

По второму вопросу - можно, только парсер будет работать через браузер IE (чтобы не настраивать авторизацию в парсере)
Можем настроить под заказ.

2й вопрос - есть ли примеры или возомжность настройки парсинга уникальных mail адресов с собственного почтового ящика gmail. Т.е. собрать из всех входящих писем уникальные mail адреса, возможно с парсингом части письма

Здравсвуйте, по какой причине при заполнении таблицы эксель, парсер пропускает некоторые карточки с контактами? Т.е. ситуация такая - 1й парсер собирает с общей страницы списка компаний ссылки на страницы этих компаний (ссылки загружаются все - проверял), 2й парсер уже работает с каждой ссылкой по отдельности - и вот здесь по каким-то ссылкам есть все данные, а по каким-то только название компании, так вот я хочу, чтобы парсер создавал строки для всех компаний (как для тех, у которых полная информация, так и для тех, по которым только название), а он (2й уровень парсера) пропускает - не создает строки в таблеце для компаний только с названием. Как это исправить?

Алексей, чтобы я смог помочь, от вас надо: http://ExcelVBA.ru/help
По переписке тут ничем не помочь при всем желании
Звоните в скайп, ник в скайпе: ExcelVBA.ru

Добрый день!
1. Сбор данных с сайта настроен корректно (при тестировании и при отображении содержимого в браузере видно, что переменным присваиваются необходимые значения).
2. Заполнение листа Excel, вроде бы, также настроено правильно (указано какие переменные необходимо вносить в какие столбцы).
3. Загрузка сведений проходит без каких-либо ошибок (во всяком случае, программа ни на что не "ругается").
При этом, после завершения работы программы никакие данные на листе Excel не появляются. Подскажите, пожалуйста, в чвём может быть проблема и какие настройки стоит проверить?
Спасибо!

Андрей, - да, можно так сделать
Увеличьте таймаут запроса в настройках парсера на вкладке ДОПОЛНИТЕЛЬНО.

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

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

Выдает ошибку: "Сервер не ответил за 6 сек. Ошибка загрузки веб-страницы по ссылке"

Дмитрий, тут много вариантов настройки.
Например, можно сначала найти все теги p класса objectInfoSecondItem, а потом вывести массив вида Название|Значение в разные столбцы (программа сама найдет нужный столбец).
Или также найти все теги p класса objectInfoSecondItem (получится массив значений), а потом действием «проверка на соответствие маске» явзять только нужный результат для конкретного столбца.
Ну или еще проще, - чтобы получить «Вид объекта», можно использовать действие «Взять блоки текста между» (между «‹b›Вид объекта‹/b›‹b›» и «‹/b›») - этот способ самый быстрый (так как без обработки HTML обходится)
Впрочем, есть и другие варианты.

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

Здравствуйте, а как быть если названия классов совпадают? у меня к примеру такой код на странице:

<div class="objectInfoSecondItem">
  <b>Вид объекта</b>
  <p>Строительство</p>
</div>
<div class="objectInfoSecondItem">
  <b>Муниципалитет</b>
  <p>Красноярский Край</p>

Мне нужно, чтобы парсер находил то что в тегах <p>, и вставлял это в разные столбцы. Есть ли возможность так сделать, а то он всю инфу из <p> вставляет в один массив. Или может сущесствует другой вид поиска, по <p> к примеру

Здравствуйте, Степан.
Вы всё правильно сделали, - это вам просто сайт такой хитрый попался, с защитой от парсеров.
Если парсер грузит только исходный код страницы, - возвращается именно то, что вы увидели (собственно, изначально браузер получает точно такой же ответ)
Потом, при запросе содержимого сайта, начиная с /favicon.ico, выполняется редирект, и там сайт определяет, используется реальный браузер, или парсер.
Обойти эту защиту можно, - генерируя запросы, аналогичные браузеру, - но повозиться надо (я потратил минут 20 - не смог сходу разобраться)
Просто вам сайт неудачный попался, - в 99% случаев всё намного проще.

Здравствуйте! На этапе тестирования у меня выдаёт документ из 420 символов, по сути это пустой документ.
принцип ссылок такой: http://life-crimea.com/list/subsection-1/
в качестве "до" ставлю:http://life-crimea.com/list/subsection-
В качестве "после":/
нажимаю тестировать и получаю:

Browser Check Page

document.cookie = 'CHECK=0; path=/';

Может это я какую то ошибку допустил?

Роман, из вашего описания — вроде как всё правильно.
Но, тем не менее, что-то вы не учли.
Есть возможность проверить работу парсера пошагово (там есть галочка «остановить на выделенном действии»)
Если сами не разберётесь, — звоните в скайп, — я покажу, что вы не так делаете.

Добрый день! У меня выдает ошибку на этапе "Тестировать".

Что я делаю не так в настройках? Или макрос не поддерживает эту страницу?
Первым делом в настройках я делаю все как указано в инструкции. На этапе редактирования действий, в первую очередь, я использую действие "Добавить текст до и после"

Ссылки на страницу построены по следующему принципу: http://exist.ru/price.aspx?sr=-4&pcode=TC1315&hd=A89FD1F7CD79BC01D6F4686....

Я пишу в качестве "до":http://exist.ru/price.aspx?sr=-4&pcode=

В качестве "после": &hd=A89FD1F7CD79BC01D6F46860C5219E70

Далее добавляю действие "Загрузить ИСХОДНЫЙ КОД вебстраницы"

Нажимаю "Тестировать"

и получаю два комментария:
1)комментарий зелеными буквами: "текст длиной 49 симв."
2) комментарий ниже: "ОШИБКА: Неверная ссылка для загрузки веб-страницы"

Что я делаю не так? Или программа не поддерживает мою страницу?

Заранее спасибо!