Задание обычных и повторяющихся границ парсинга (как парсить определенные части 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)
Loading...
Автор: admin, 11 October 2010
Рубрики: Парсинг
Tags: , ,
Есть 25 коммент. к сообщению: “Задание обычных и повторяющихся границ парсинга (как парсить определенные части web-страниц)”
  1. Эмиль says:

    А как можно сделать так, чтобы при парсинге повторящихся элементов с одной страницы (через повторяющиеся границы) в итоге получалось не:
    контент 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 says:

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

  3. Vlad says:

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

  4. Admin says:

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

  5. Vlad says:

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

  6. Ilya says:

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

  7. Стас says:

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

  8. Максим says:

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

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

  9. Геннадий says:

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

    • admin says:

      Здравствуйте, не убирать html-теги p,br,u,ul,li,table,td,tr,tbody

  10. e2e4 says:

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

  11. MAX300 says:

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

  12. Сергей says:

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

  13. Дмитри says:

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

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

  14. Павел says:

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

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

  15. Олег says:

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

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

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

css.php