Задание границ парсинга
Задание границ парсинга с использованием макроса {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
Пожалуйста.
Ответил.
Vin77 là điểm đến lý tưởng cho những ai đam mê cá cược trực tuyến. Với thiết kế hiện đại, giao diện thân thiện, và bố cục trực quan, Vin77.pro mang đến cho người chơi trải nghiệm lướt web mượt mà và tiện lợi nhất. https://www.vin77.pro/