Вывод повторяющаяся граница + обычная

Тема в разделе "Границы парсинга", создана пользователем Djahat, 27 авг 2013.

  1. Djahat

    Djahat Well-Known Member Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    514
    Город:
    Мордор
    Всем привет, подскажите кто знает.

    Как настроить шаблон вывода в случае если.



    На странице есть обычная граница парсинга 1 штука

    и две повторяющиеся границы парсинга


    например

    <div> Shtaket<div>
    <tr>
    <td>nikolas</td>
    <td>marfa</td>
    </tr>




    Как сделать вывод в CSV?

    1строка Shtaket; nikolas
    2строка Shtaket; marfa



    То есть каждой повторяющейся границе в строку добавить единственную неповторяющуюся?

    Заранее благодарю тех кто вкурсе
     
  2. nikolas1612

    nikolas1612 Member Пользователи

    Регистрация:
    27 ноя 2011
    Сообщения:
    439
    решение зависит от того, сколько циклов повторяющейся границы там может быть - если их от 1 до 3х - все можно решить через обычный шаблон вывода, трижды прописав 1 границу напротив 3-х других. если же повторяющихся циклов много, и не известно заранее, сколько - тут надо будет поработать с повторяющимися.
    в этом случае "штакет" обнимаете обычной границей, повоторы - повторяющейся.
    в настройках повторяющейся границы будет структура вида
    <CD_GRAN_1!>[VALUE] (т.е. к каждму циклу повторяющейся границы добавится одна и та же, обычная граница)
    а в общем шаблоне вывода <CD_CYCLE_GRAN_1!>

    P.S. ну а если нужен совсем недетский пилотаж -
    то разобраться (по вашей схеме) с конструкцией типа
    PHP:
    <divShtaket<div>
    <
    tr>
    <
    td>nikolas01</td>
    <
    td>marfa01</td>
    <
    td>nikolas011</td>
    <
    td>marfa011</td>
    </
    tr>
    <
    divShtaket2<div>
    <
    tr>
    <
    td>nikolas02</td>
    <
    td>marfa02</td>
    </
    tr>
    <
    divShtaket3<div>
    <
    tr>
    <
    td>nikolas03</td>
    <
    td>marfa03</td>
    <
    td>nikolas003</td>
    <
    td>marfa003</td>
    <
    td>nikolas0003</td>
    <
    td>marfa0003</td>
    <
    td>nikolas033</td>
    <
    td>marfa033</td>
    </
    tr>
    и привести ее к виду
    PHP:
    Shtaket;nikolas01
    Shtaket
    ;marfa01
    Shtaket
    ;nikolas011
    Shtaket
    ;marfa011

    Shtaket2
    ;nikolas02
    Shtaket2
    ;marfa02

    Shtaket3
    ;nikolas03
    Shtaket3
    ;marfa03
    Shtaket3
    ;nikolas003
    Shtaket3
    ;marfa003
    Shtaket3
    ;nikolas0003
    Shtaket3
    ;marfa0003
    Shtaket3
    ;nikolas033
    Shtaket3
    ;marfa033
    может такая формула -
    PHP:
    [GETMORECYCLECONTENT][SOURCE][VALUE][/SOURCE][START]<td>[/START][END]</td>[/END][TOSTART][GRAN1];[/TOSTART][TOEND][/TOEND][PARAMS][/PARAMS][SEP]{br}[/SEP][/GETMORECYCLECONTENT]
     
    Последнее редактирование: 27 авг 2013
  3. Min-Z-Drav

    Min-Z-Drav New Member Пользователи

    Регистрация:
    14 янв 2015
    Сообщения:
    32
    Подскажите пожалуйста, где выставить чтобы например с 5 цикла начался сбор данных а не с 1?
     
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    12.796
    Ссылки недоступны для гостей, зарегистрируйтесь или авторизуйтесь на форуме!
     
  5. Min-Z-Drav

    Min-Z-Drav New Member Пользователи

    Регистрация:
    14 янв 2015
    Сообщения:
    32
    я что-то не пойму где прописывать 20, можно показать на скриншоте пожалуйста?!

     
  6. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.630
    Нажимаете ctrl+f1
    выбираете в выпадающем списке нужную повторяющююся границу
    тыкаете на выпадающий список с красной стрелкой
     

    Вложения:

  7. Min-Z-Drav

    Min-Z-Drav New Member Пользователи

    Регистрация:
    14 янв 2015
    Сообщения:
    32
    Я что то не пойму... вот есть страница одна, с нее парсится 1 картинка, одно описание, одно название - всем этим можно ограничиться простой границей парсинга. НО с той страницы нужно еще спарсить несколько строк через повторяющие границы парсинга и все это импортировать через скрипт в базу данных в одну запись!

    Пробовал так

    <Скрипт>Текст текст текст <CD_CYCLE_GRAN_1!></Скрипт> В результате получалось просто Текст текст текст (без повторяющих границ парсинга).

    Но если я скрипт уберу и нажму предпросмотр получиться:

    Текст текст текст 1
    2
    3
    4
    5
    6
    7
    8


    Как сделать чтобы повторяющие границы парсинга и просто границы парсинга парсились в одну запись базы данных? через скрипт?
     
  8. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.630
    Здравствуйте!
    Используйте очередность выполнения макросов php. Их там 6 шт.
    Вместо
    Код:
    <PHP_SCRIPT=http://>data=[DATAENCODE][/DATAENCODE]</PHP_SCRIPT> 
    используйте
    <PHP_SCRIPT_5=http://>data=[DATAENCODE][/DATAENCODE]</PHP_SCRIPT_5>
    И постарайтесь научиться использовать лог парсинга, который можно увидеть внизу экрана при предпросмотре.
     
  9. alamina.moon

    alamina.moon Модератор Команда форума Модератор

    Регистрация:
    14 янв 2013
    Сообщения:
    214
    Нужно сделать то что вы сделали но в шаблоне повторяющейся границы :) есть и такой - скажу вам по секрету.
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
     
  10. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    12.796
    Наверняка забыли про [DATAENCODE]:
    <PHP_SCRIPT=http://>data=[DATAENCODE]Текст текст текст <CD_CYCLE_GRAN_1!>[/DATAENCODE]</PHP_SCRIPT>
     
  11. SHEVA

    SHEVA New Member Пользователи

    Регистрация:
    13 июн 2015
    Сообщения:
    2
    [​IMG]

    Вот скрин подобного но ничего не выходит, потому что при парсенге он вставляет только код с одного поля а не со всех. Вот результат
    [​IMG]
    Тоисть мне нужно добавить в одну страницу все границы которые я выбрал и те, что выбраны, через повторяющуюся границу.
     
    Последнее редактирование: 13 июн 2015
  12. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    12.796
  13. Min-Z-Drav

    Min-Z-Drav New Member Пользователи

    Регистрация:
    14 янв 2015
    Сообщения:
    32
    делал и так, вообщем пример на одной странице 15 циклов, и эти циклы нужно в одну запись записать MySQL, а не каждый цикл по отдельности

    нужно вот так:
    [запись в базу]
    цикл 1
    цикл 2
    цикл 2
    [/запись в базу]


    а получается вот так:

    [запись в базу]
    цикл 1
    [/запись в базу]

    [запись в базу]
    цикл 2
    [/запись в базу]

    [запись в базу]
    цикл 3
    [/запись в базу]


    подскажите как сделать?
     
  14. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.630
    Помоему просто php скрипт внутри применить повторяющейся границы, но какой, хз. хотя точно не уверен что так вообще можно
     
  15. alamina.moon

    alamina.moon Модератор Команда форума Модератор

    Регистрация:
    14 янв 2013
    Сообщения:
    214
    Лучше всего спарсить нужное в один файл, залить его на фтп и после этого запустить пхп срипт единожды который разберет Ваш файл и добавить все что надо в sql таблицы. на мой взгляд это самое эффективное решение нежели выполнять пхп скрипт 100500 раз.
     
  16. SHEVA

    SHEVA New Member Пользователи

    Регистрация:
    13 июн 2015
    Сообщения:
    2
    Уже разобрались) Но проблема как оказалось была не в совмещении границ, а в экранирование кавычек в базе) Спасибо Амину, натолкнул на это совершенно случайно!
     
  17. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    12.796
    В PHP_SCRIPT:
     

Поделиться этой страницей