Задание обычных и повторяющихся границ парсинга (как парсить определенные части web-страниц)


Задание границ парсинга
Задание границ парсинга с использованием макроса {skip} (аналог общепринятой «регулярки»)
Задание границ парсинга для картинок
Задание границ парсинга для рубрик или подрубрик
Задание границ парсинга для нескольких характеристик товара (и вывод в разные ячейки CSV)
Опция «ожидать закрытия тега»

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


Задание границ парсинга

Задание границ парсинга необходимо для того, чтобы парсить определенные части web-страниц. Например, только текст статьи или какие-либо характеристики товара.

Content Downloader - границы парсинга
Content Downloader - границы парсинга

Для того, чтобы задать начало парсинга (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 Star2 Stars3 Stars4 Stars5 Stars (оценок: 4, средний балл: 5,00)
Загрузка...
Автор: admin, 11 октября 2010
Рубрики: Парсинг
Метки: , ,
25 комментариев к сообщению: “Задание обычных и повторяющихся границ парсинга (как парсить определенные части web-страниц)”
  1. А как можно сделать так, чтобы при парсинге повторящихся элементов с одной страницы (через повторяющиеся границы) в итоге получалось не:
    контент 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 и т.д. сохранив при этом изначальную структуру страницы?

  2. admin:

    Задаете повторяющиеся границы и в шаблоне вывода ставите макрос CD_CYCLE_GRAN_ALL!.

  3. Vlad:

    Подскажите как выставлять границы парсинга http://freemarket.ua/175282/philips-hd-4649-00.html если на такой странице есть пять вкладок и каждая имеет свой уникальный адрес.Когда захожу для выставления границ парсинга — то не могу зайти на другие вкладки(не дает)как в таких и похожих случаях быть?

  4. Admin:

    Парсить можно только одну из вкладок.

  5. Vlad:

    Спасибо,буду пробовать

  6. Ilya:

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

  7. В программе только 20 границ парсинга, как расширить их до большего количества? до 100? Характеристик много, не охото в одну ячейку запихивать.

  8. Максим:

    Огромное спасибо за программу! Сделала всё что нужно и очень просто.

    Только один вопрос остался: можно ли помимо отпасреных полей выводить рядом название файла (или номер), в котором он нашел это поле? файлов для парсинга у меня несколько сотен.

  9. Геннадий:

    Подскажите плз, я парсю описание не по строчкам а все сразу, убиераю штмл код и у меня описание выходит в одну строчку в цсв файле, как мне сделать так чтоб описание было в столбик ?

  10. e2e4:

    А как распарсить в цикле 1 повторяющейся границы также повторяющиеся элементы? Имеется ввиду xml, и нужно выпарсить данные из .

  11. MAX300:

    Есть — «границы парсинга n в качестве контента для повторяющихся границ»
    Добавьте тоже для обычных границ. И, если возможно, в окне задания границ парсинга сделайте выделение первой границы одним цветом (например, красным), а второй — другим (например, синим)

  12. Здравствуйте!
    При определении «Повторяющихся границ» не сохраняется номер тега по счету для начала парсинга (в тексте определено как поле — «a»)..
    Подскажите, пожалуйста, что нужно сделать, чтобы он сохранялся.

  13. Дмитри:

    Здравствуйте!
    Не могу понять, как парсить тег dl в CSV, dt — это заголовок столбца, dd — строка столбца. Проблема в том, что у товаров разное колличество этих элементов, где-то нету какой-то параметра, где-то есть

    Артикул
    500/4
    Производитель
    Global
    Страна
    Италия
    Единицы измерения
    шт
    Параметры
    0.6х0.35х0.09
    Наличие
    Есть в наличии
    Материал
    Алюминий
    Межосевое расстояние
    500 мм
    Теплоотдача
    724 Вт
    Рабочее давление
    16 атм
    Давление опрессовки
    24 атм
    Температура теплоносителя до
    110 С°

  14. Павел:

    Здравствуйте,
    почему в предпросмотре элемента не загружается картинка (например autodrive73.ru/_sh/22/2276.jpg), а браузер открывает? (http://autodrive73.ru/shop/2276/desc/avtomagnitola-witson-w2-d509c-chrysler-sebring-cirrus)

    Является ли эта функция ограничением версии?

  15. не понимаю как устроен парсинг повторяющихся границ внутри статических.. есть 2 тега — товары и рекомендуемые товары, в каждом дофига повторяющихся тегов. задаю статические границы включающие товары — просто ограничиваю тегом с товарами. задаю повторяющиеся границы чтобы собирал данные по товару. пока значение границ в повторяющихся границах — 0 — всё работает(собирает все товары на странице — в т.ч. рекомендуемые), как только ограничиваю — выдачи нет.

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

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

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

css.php