#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, но пока у меня это работало.