Задание обычных и повторяющихся границ парсинга (как парсить определенные части 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: , ,
Есть 26 коммент. к сообщению: “Задание обычных и повторяющихся границ парсинга (как парсить определенные части 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 – всё работает(собирает все товары на странице – в т.ч. рекомендуемые), как только ограничиваю – выдачи нет.

  16. vin77 says:

    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/

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

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

css.php