Задание границ парсинга
Задание границ парсинга с использованием макроса {skip} (аналог общепринятой “регулярки”)
Задание границ парсинга для картинок
Задание границ парсинга для рубрик или подрубрик
Задание границ парсинга для нескольких характеристик товара (и вывод в разные ячейки CSV)
Опция “ожидать закрытия тега”
Повторяющиеся границы парсинга
Поочередный вывод элементов двух и более повторяющихся границ парсинга (примечание: если вы парсите несколько товаров с одной страницы лучше воспользоваться этим способом, он же используется и в случаях, когда нужно задать более 5 повторяющихся границ парсинга)
Задание повторяющихся границ парсинга и их простой вывод
Задание повторяющихся границ парсинга для файлов или картинок
Задание границ парсинга
Задание границ парсинга необходимо для того, чтобы парсить определенные части web-страниц. Например, только текст статьи или какие-либо характеристики товара.
Для того, чтобы задать начало парсинга (b), выделите нужный текст/код в поле (e) и нажмите кнопку “задать начало парсинга” (либо Ctrl+1).
Для того, чтобы задать конец парсинга (d), выделите нужный текст/код в поле (e) и нажмите кнопку “задать конец парсинга” (либо Ctrl+2).
Все, что окажется между началом и концом, будет парситься.
Поля a и c – номера тегов по счету. Для понимания их назначения приведу пример. Допустим, в коде загружаемой страницы есть несколько тегов div:
1 2 3 4 5 6 7 | <div> <div> <div> Текст статьи </div> </div> </div> |
Задаем значение поля a равное 2, b равное <div>, c равное 0, d равное </div>. В этом случае, на выходе вы получите Текст статьи. Программа начнет “забирать текст с тега div, который по счету 2 (отсчет идет от 0).
Номер a отсчитывается от начала документа, а номер c отсчитывается от первой границы (от начала парсинга).
Примите к сведению: при задании границ парсинга через “окно задания границ парсинга” значения полям a и c присваиваются автоматически.
Если включить опцию “с границами” (3), то текст будет парситься вместе с началом и концом парсинга:
<h1 class=”b-page-title b-page-title_type_model”>Thomas TWIN TT Aquafilter</h1>
Если отключить опцию “с границами” (3), то текст будет парситься без начала и конца парсинга:
class=”b-page-title b-page-title_type_model”>Thomas TWIN TT Aquafilter
Если включить опцию “htm to txt” (4), то в тексте выбранной границы парсинга будут удаляться все html-теги, кроме прописанных в настройках функции “htm to txt” (настроить функцию можно в главном окне программы: вкладка “контент” – группа “другое” – графическая кнопка “настройка функции преобразования html кода в текст” правее чекбокса “htm to txt”). Теги должны прописываться в столбик и без скобок, например:
1 2 3 | a br p |
После того, как будут заданы начало и конец парсинга нужно нажать кнопку “готово” или, если вы хотите перейти к заданию следующей границы парсинга, нажмите кнопку “задать и перейти к следующей” Ctrl+3.
Для более удобной навигации по коду вызовите встроенный браузер (f): кнопка “браузер (открыть/закрыть)” (7) (используется Internet Explorer системы). По умолчанию скрипты в браузере отключены, для включения скриптов нажмите кнопку (8).
Задание границ парсинга с использованием макроса {skip}:
Этот макрос используется для задания границ парсинга с динамической (изменяющейся) частью самой границы парсинга. Например, вы парсите сайт на DLE, где нужный контент помещен в тег div. Данный тег div имеет разный id в каждой статье (ниже приведены примеры div из разных статей):
<div id="news-id-1335" style="display:inline;"> <div id="news-id-1336" style="display:inline;"> <div id="news-id-1337" style="display:inline;"> |
Для парсинга контента из таких div будем использовать макрос {skip}. В данном случае, начало парсинга сделует задать так:
<div id="news-id-{skip}" style="display:inline;"> |
ВАЖНО!: при использовании макроса {skip} в границах парсинга, значения полей (a) и (c) должны быть равны 0 (смотрите скриншот выше)!
Задание границ парсинга для картинок:
Задание границ парсинга для рубрик или подрубрик:
Задание границ парсинга для нескольких характеристик товара (и вывод в разные ячейки CSV):
Ожидать закрытия тега:
Включается чекбоксом с “x” (1), такой чекбокс есть у каждой границы во вкладке с границами парсинга.
Эту функцию целесообразно использовать, когда текст статьи располагается между тегами div и /div (например), и сам текст содержит в себе дополнительные теги div (например, с картинками). При включенной функции “ожидать закрытия тега” Программа найдет начало парсинга и начнет забирать текст от начала парсинга, до момента, когда все открытые теги (названия которых указаны в поле (d)) после начала парсинга, будут закрыты.
Например, мы загружаем страницу с кодом:
1 2 3 4 5 6 7 8 9 10 | <div> <div> Первая часть статьи <div> Вторая часть статьи </div> Третья часть статьи </div> Лишний текст </div> |
Задаем значение полей следующим образом (названия полей взяты из рисунка 2):
a – 1
b – <div>
c – 0
d – div
В этом случае на выходе будем иметь:
1 2 3 4 5 6 7 | <div> Первая часть статьи <div> Вторая часть статьи </div> Третья часть статьи </div> |
Программа загрузила страницу и начала сканировать код. Она нашла второй по счету тег div (так как значение поля a равно одному, а отсчет идет от 0). Потом нашла тег, закрывающий наш второй по счету div и “забрала” между ними текст.
Для парсинга текста статьи с веб-страницы с использованием “Ожидать закрытия тега” достаточно будет задать только начало парсинга и в поле d прописать название тега, между которым находится статья. Названия тегов задаются без ковычек, например: div, li, br, td, p.
Если не получается использовать открывающийся тег в границе начала парсинга, то присвойте полю c значение -1 (минус один).
Для лучшего понимания опции “ожидать закрытия тега” изучите следующий видео-материал:
Повторяющиеся границы парсинга:
Задаются в случае, когда необходимо спарсить текст между всеми однотипными и неоднократно-встречающимися тегами в web-документе.
Например, код загружаемого web-документа:
1 2 3 4 5 6 | <body> текст статьи <div id="comment-text">Текст комментария 1</div> <div id="comment-text">Текст комментария 2</div> <div id="comment-text">Текст комментария 3</div> </body> |
При задании повторяющихся границ:
1 | <div id="comment-text"> и </div> |
вы получите следующий результат парсинга:
1 2 3 | Текст комментария 1 Текст комментария 2 Текст комментария 3 |
Использовать границы парсинга n в качестве контента для повторяющихся границ:
Для поиска повторяющихся границ парсинга только в определенной части документа, например, в тексте обычной границы парсинга 3, выберите в выпадающем списке 2 (смотрите скриншот вкладки с границами парсинга) цифру 3.
Для того, чтобы выводить сначала все элементы повторяющихся границ парсинга 1, затем все элементы повторяющихся границ парсинга 2, затем все элементы границ парсинга 3 и так далее… Используйте макросы шаблона вывода (кнопка “редактировать шаблон вывода” на панели инструментов главного окна программы):
1 2 3 4 | <CD_CYCLE_GRAN_1!> <CD_CYCLE_GRAN_2!> <CD_CYCLE_GRAN_3!> ... |
Поочередный вывод элементов двух и более повторяющихся границ парсинга
Для того, чтобы выводить элементы разных повторяющихся границ парсинга по очереди:
1 2 3 4 | элемент 1 первой повторяющейся границы;элемент 1 второй повторяющейся границы;... элемент 2 первой повторяющейся границы;элемент 2 второй повторяющейся границы;... элемент 3 первой повторяющейся границы;элемент 3 второй повторяющейся границы;... ... |
используйте макрос шаблона вывода (кнопка “редактировать шаблон вывода” на панели инструментов главного окна программы) <CD_CYCLE_GRAN_ALL!>. Если необходимо указать другой разделитель элементов границ парсинга (по умолчанию – перенос строки {br}), то задайте разделители в соответствующих полях окна настроек повторяющихся границ парсинга (кнопка “настройка повторяющихся границ” на панели инструментов главного окна программы). Например, для CSV обычно используется ; (точка с запятой).
К каждому элементу любой повторяющейся границы парсинга в начало и в конец можно дописать любой текст или макрос из шаблона вывода. Прописывать текст или макрос следует в соответствующие текстовые поля в окне настроек повторяющихся границ парсинга (кнопка “настройка повторяющихся границ” на панели инструментов главного окна программы).
Задание повторяющихся границ парсинга и их простой вывод (построение всего CSV-файла с помощью повторяющихся границ парсинга смотрите в конце видео):
Задание повторяющихся границ парсинга для файлов или картинок:
Второй способ построения всего CSV-файла с помощью повторяющихся границ парсинга (применяется в случае, когда нужно задать более 5 повторяющихся границ парсинга или в случае, когда границы парсинга “съезжают/расходятся с соответствующими значениями” других повторяющихся границ) смотрите тут http://sbfactory.ru/cd/?p=893
А как можно сделать так, чтобы при парсинге повторящихся элементов с одной страницы (через повторяющиеся границы) в итоге получалось не:
контент 1 между повторяющимися границами #1
контент 2 между повторяющимися границами #1
контент 3 между повторяющимися границами #1
контент 1 между повторяющимися границами #2
контент 2 между повторяющимися границами #2
контент 3 между повторяющимися границами #2
а:
контент 1 между повторяющимися границами #1
контент 1 между повторяющимися границами #2
контент 2 между повторяющимися границами #1
контент 2 между повторяющимися границами #2
контент 3 между повторяющимися границами #1
контент 3 между повторяющимися границами #2
Т.е. можно ли как-то настроить, чтобы по очереди сохранялся контент между повторяющимися границами #1, 2, 3 и т.д. чтобы можно было спарсить длинные страницы со списками вида товар1 описание1, товар2 описание2 и т.д. сохранив при этом изначальную структуру страницы?
Задаете повторяющиеся границы и в шаблоне вывода ставите макрос CD_CYCLE_GRAN_ALL!.
Спасибо, то что нужно!
Подскажите как выставлять границы парсинга http://freemarket.ua/175282/philips-hd-4649-00.html если на такой странице есть пять вкладок и каждая имеет свой уникальный адрес.Когда захожу для выставления границ парсинга – то не могу зайти на другие вкладки(не дает)как в таких и похожих случаях быть?
Парсить можно только одну из вкладок.
Хорошо,а как тогда все “слепить в кучу” на одну страницу или если понадобится в один csv файл?
Ссылка товара http://freemarket.ua/175282/philips-hd-4649-00.html
Ссылка товара с характеристиками http://freemarket.ua/175282/spec/philips-hd-4649-00.html
Как видно, они отличаются только “spec”. Парсите товары с таких страниц (со spec).
Спасибо,буду пробовать
Вопрос по дополнительным настройкам границ, есть опция обрезать с конца строки на кол-во символов(имею в виду уже спарсенный материал), есть возможность резать с начала строки?
Пока нет, скриптом режьте http://sbfactory.ru/cd/?p=186
В программе только 20 границ парсинга, как расширить их до большего количества? до 100? Характеристик много, не охото в одну ячейку запихивать.
http://sbfactory.ru/cd/?p=348
Огромное спасибо за программу! Сделала всё что нужно и очень просто.
Только один вопрос остался: можно ли помимо отпасреных полей выводить рядом название файла (или номер), в котором он нашел это поле? файлов для парсинга у меня несколько сотен.
Подскажите плз, я парсю описание не по строчкам а все сразу, убиераю штмл код и у меня описание выходит в одну строчку в цсв файле, как мне сделать так чтоб описание было в столбик ?
Здравствуйте, не убирать html-теги p,br,u,ul,li,table,td,tr,tbody
А как распарсить в цикле 1 повторяющейся границы также повторяющиеся элементы? Имеется ввиду xml, и нужно выпарсить данные из .
Теги обрезало. Из item.
Есть – “границы парсинга n в качестве контента для повторяющихся границ”
Добавьте тоже для обычных границ. И, если возможно, в окне задания границ парсинга сделайте выделение первой границы одним цветом (например, красным), а второй – другим (например, синим)
Здравствуйте!
При определении “Повторяющихся границ” не сохраняется номер тега по счету для начала парсинга (в тексте определено как поле – “a”)..
Подскажите, пожалуйста, что нужно сделать, чтобы он сохранялся.
Здравствуйте!
Не могу понять, как парсить тег dl в CSV, dt – это заголовок столбца, dd – строка столбца. Проблема в том, что у товаров разное колличество этих элементов, где-то нету какой-то параметра, где-то есть
Артикул
500/4
Производитель
Global
Страна
Италия
Единицы измерения
шт
Параметры
0.6х0.35х0.09
Наличие
Есть в наличии
Материал
Алюминий
Межосевое расстояние
500 мм
Теплоотдача
724 Вт
Рабочее давление
16 атм
Давление опрессовки
24 атм
Температура теплоносителя до
110 С°
Здравствуйте,
почему в предпросмотре элемента не загружается картинка (например autodrive73.ru/_sh/22/2276.jpg), а браузер открывает? (http://autodrive73.ru/shop/2276/desc/avtomagnitola-witson-w2-d509c-chrysler-sebring-cirrus)
Является ли эта функция ограничением версии?
не понимаю как устроен парсинг повторяющихся границ внутри статических.. есть 2 тега – товары и рекомендуемые товары, в каждом дофига повторяющихся тегов. задаю статические границы включающие товары – просто ограничиваю тегом с товарами. задаю повторяющиеся границы чтобы собирал данные по товару. пока значение границ в повторяющихся границах – 0 – всё работает(собирает все товары на странице – в т.ч. рекомендуемые), как только ограничиваю – выдачи нет.
Здравствуйте.
Опубликуйте ваш файл проекта на форуме http://forum.sbfactory.ru, посмотрим, в чем дело.
С уважением к вам, Сергей.
Спасибо за ответ! На форуме вопрос задал.
http://forum.sbfactory.ru/showthread.php?p=23100
Пожалуйста.
Ответил.