- Как заказать парсер сайта
- Видеоинструкции по настройке
- Возможности программы-парсера
- Действия в парсере
- Раздел «Работа с HTML»
- Раздел «Текстовые»
- Раздел «Перекодировка и форматирование»
- Раздел «Проверка и сравнение»
- Раздел «Разное»
- Раздел «Функции массива»
- Раздел «Числовые»
- Раздел «Работа с переменными»
- Раздел «Листы и книги Excel»
- Раздел «Обработка файлов из папки»
- Раздел «HTTP запрос»
- Раздел «Internet Explorer»
- Раздел «Управление парсером»
- Раздел «Веб-запросы, XML, макросы VBA»
- Недокументированные действия
- Работа с браузером (Chrome и т.п.)
- Отключенные (устаревшие) действия
- Интерфейс программы
- Использование браузера
- Ошибки при парсинге
- Вывод массива значений в одну ячейку
- Обход защиты Qrator, Incapsula и CloudFare
- Ошибка: сервер не ответил за 9 секунд
- Парсер перезаписывает данные в первой строке листа
- Невозможно запустить макрос, - нет доступа к проекту VBA
- Ошибка Compile error in hidden module
- Ошибка загрузки страницы по HTTPS (SSL Error)
- Дополнительные возможности
- Зарезервированные переменные и подстановочные коды парсера
- Кеширование страниц в парсере
- Переменные в парсере
- Обновление строк в существующей таблице при парсинге
- Переключение между наборами настроек в парсере
- Запуск мониторинга цен по расписанию
- Запуск парсера по расписанию
- Программный запуск парсера из внешнего макроса
- Доп. опции парсера (файл parser.ini)
- Наборы действий
- Прочие статьи по настройке парсера
- Коды останова парсера, и перехода на другое действие
- Плагины для парсера
- Запуск нескольких парсеров по очереди
- Обработка капчи (Captcha) в парсере
- Прокси серверы
Основы настройки программы «Парсер сайтов» |
Самостоятельная настройка программы «Парсер сайтов». Основы.
Данная статья не может считаться полноценной инструкцией и руководством к действию для настройки парсера (т.к. была написана достаточно давно человеком, который не имел большого опыта в настройке), но в ней есть ряд моментов, которые могут быть интересны другим людям.
В сегодняшнем уроке мы на практическом примере, научимся автоматически выгружать с сайта интересующие нас данные при помощи программы «Парсер сайтов».
Предположим, мы хотим себе купить автомобиль с пробегом, и поэтому каждый день просматриваем сайт дилерской компании в ожидании интересной цены.
Задача: выгружать цены без захода на сайт и просмотра всех страничек.
Для того чтобы настроить выгрузку данных в «касание одной кнопкой», мы заходим в панель надстройки (как установить надстройку смотри 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
- Добавить комментарий
- 12688 просмотров
Комментарии
Очень много книг, да почти все книги и сайты рассказывают ни о чем, информация которая там написана вообще не поможет никогда в жизни, и смысл вообще такое делать и создавать ГС... Бред вообщем.. Мир катится в безну
Андрей, с сайтами спортивных результатов (почти со всеми) в разы сложнее, чем с сайтами другой тематики (где чем-то торгуют)
Сайтов / книг по столь специфической тематике (как взять в 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 обходится)
Впрочем, есть и другие варианты.
Попробовал функцию разделения текстовой строки на массив, но она меня не совсем устраивает, так как столбцы у меня идут в другом порядке нежели чем теги на сайте, да и некоторые вовсе отсутствуют. Чую что нужна другая команда, а не поиск тега по классу, подскажите пожалуйста.
Здравствуйте, а как быть если названия классов совпадают? у меня к примеру такой код на странице:
Мне нужно, чтобы парсер находил то что в тегах
<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) комментарий ниже: "ОШИБКА: Неверная ссылка для загрузки веб-страницы"
Что я делаю не так? Или программа не поддерживает мою страницу?
Заранее спасибо!