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

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

  1. mat

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

    Регистрация:
    8 май 2010
    Сообщения:
    63
    Приветствую.
    <лирическое отступление> За последнее время в CD появляется все больше новых улучшений, фич, примочек и т.д. За что автору, конечно, огромное спасибо. То, что раньше нельзя было сделать или делалось через окольные пути, сегодня уже в функционале программы. Еще раз спасибо. Не мог не написать :)</лирическое отступление>

    Собственно вопрос к знатокам:
    Насколько я знаю, сейчас можно только отфильтровать/не загружать документ с определенными ключами.
    А можно ли загружать/менять границы парсинга при определенном условии?
    Т.е. можно ли задать где-то условие, при котором если программа загружает контент из границы_1, и он содержит последовательность "XXX", то программа загружает контент только из границы_2? И, соответственно, в шаблоне вывода выводить контент только из границы_2. При этом, если контент в границе_1 не содержит "ХХХ", то парсить и выводить только её?
     
  2. nikolas1612

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

    Регистрация:
    27 ноя 2011
    Сообщения:
    439
    при помощи skip удалить содержимое всей границы при наличии в ней определённого блока
    дальше отсеять теперь уже пустую границу при помощи ifnil
     
  3. mat

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

    Регистрация:
    8 май 2010
    Сообщения:
    63
    Огромное спасибо, работает
     
  4. markvaaa

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

    Регистрация:
    20 ноя 2013
    Сообщения:
    4
    Помогите и мне. Уже все видео и инструкции пересмотрел, но так и не получается.

    Нужно спарсить повторяющиеся границы и пропустить одну по условию. Объясню на примере. Есть код:

    Код:
    <div class="firms ads">
    		<ul class="firm-list">
    			<li class="cfirm">
    			        <span class="firmname"> 1 граница парсинга внутри повтор.границ 1</span>
    				<span class="comment">2 граница парсинга внутри повтор.границ 1	</span>
    			</li>
    	        </ul>
              </div>
    	  
              <div class="firms">
    		<ul class="firm-list">
    			<li class="cfirm">
    			        <span class="firmname"> 1 граница парсинга внутри повтор.границ 1</span>
    				<span class="comment">2 граница парсинга внутри повтор.границ 1	</span>
    			</li>
    	        </ul>
              </div>
    
              <div class="firms">
    		<ul class="firm-list">
    			<li class="cfirm">
    			        <span class="firmname"> 1 граница парсинга внутри повтор.границ 1</span>
    				<span class="comment">2 граница парсинга внутри повтор.границ 1	</span>
    			</li>
    	        </ul>
              </div>	
    и тд.
    			
    
    Повторяющиеся границы задаю - <li class="cfirm"> и </li>
    1 граница парсинга внутри повтор.границ 1 - <span class="firmname"> и </span>
    2 граница парсинга внутри повтор.границ 1 - <span class="comment"> и </span>

    Так вот, на некоторых страницах есть границы, которые парсить не нужно, у этой границы див имеет класс class="firms ads", а нужны только начинающиеся с <div class="firms">
     
  5. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.
    Задавайте повторяющиеся границы не <li class="cfirm"> и </li>, а <div class="firms"> и </li>!
     
  6. markvaaa

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

    Регистрация:
    20 ноя 2013
    Сообщения:
    4
    Извиняюсь, сейчас увидел, что не правильно написал код для парсинга. Правильный выглядит так:
    Код:
    <div class="firms ads">
    		<ul class="firm-list">
    			<li class="cfirm">
    			        <span class="firmname"> 1 граница парсинга внутри повтор.границ 1</span>
    				<span class="comment">2 граница парсинга внутри повтор.границ 1	</span>
    			</li>
                           
    	        </ul>
              </div>
    
    <div class="firms">
    		<ul class="firm-list">
    			<li class="cfirm">
    			        <span class="firmname"> 1 граница парсинга внутри повтор.границ 1</span>
    				<span class="comment">2 граница парсинга внутри повтор.границ 1	</span>
    			</li>
                            <li class="cfirm">
    			        <span class="firmname"> 1 граница парсинга внутри повтор.границ 1</span>
    				<span class="comment">2 граница парсинга внутри повтор.границ 1	</span>
    			</li>
                            <li class="cfirm">
    			        <span class="firmname"> 1 граница парсинга внутри повтор.границ 1</span>
    				<span class="comment">2 граница парсинга внутри повтор.границ 1	</span>
    			</li>
    	        </ul>
              </div>
    	  
            
    
    Нужно чтобы CD пропустил первый див с классом firms ads (если он есть) и начал парсить в <div class="firms"> </div>. Для этого задаю повторяющиеся страницы как описал выше.
     
  7. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Макросом REPLACE потом отрежьте первый DIV и все.
    {skip}<div class="firms ads">|
     

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