Канал Yahoo: как анализировать вложенные разделы

#yahoo-pipes

#yahoo-каналы

Вопрос:

Для страницы, имеющей несколько разделов, как просто извлекать содержимое из разделов, содержащих полезный текст, и избегать других разделов, предназначенных для рекламы и т.д.

Например, структура страницы, подобная этой:

 <div id="articlecopy">

  <div class="advertising 1">Ads I do not want to fetch.</div>

  <p>Useful texts go here</p>

  <div class="advertising 2">Ads I do not want to fetch.</div>

  <div class="related_articles_list">I do not want to read related articles so parse this part too</div>

</div>
  

В этом вымышленном примере я хочу избавиться от двух разделов для рекламы и DIV для связанных статей. Все, что я хочу, это извлечь полезный контент в

внутри родительского DIV.

Может ли Pipe это сделать?

Спасибо.

Ответ №1:

Попробуйте модуль YQL с xpath. Что-то в этом роде:

 SELECT * from html where url="http://MyWebPageWithAds.com" and xpath='//div/p'
  

Приведенный выше запрос извлечет часть html-кода внутри тега <p> под родительским тегом <div> . Вы можете пофантазировать с xpath, если у ваших разделов есть атрибуты.

Допустим, например, у вас была страница с несколькими разделами, но тот, который вы хотели, выглядел следующим образом:

 <div>
    <div>Stuff I don't want</div>
    <div class="main_content">Stuff I want to add to my feed</div>
    <div>Other stuff I don't want</div> 
</div>
  

Вы бы изменили строку YQL выше на эту:

 SELECT * from html where url="http://MyWebPageWithAds.com" 
and xpath='//div/div[contains(@class,"main_content")]'
  

Я сам только недавно открыл для себя YQL и довольно новичок в использовании xpaths, но пока у меня это работало.