对于具有多个DIV的页面,如何仅从包含有用文本的DIV中获取内容并避免其他用于广告等的DIV。
例如,像这样的页面结构:
。
<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。我想要的只是在
父 DIV 中
获取有用的内容。管道能做到这一点吗?
谢谢。
使用 xpath 尝试 YQL 模块。 大致如下:
SELECT * from html where url="http://MyWebPageWithAds.com" and xpath='//div/p'
上面的查询将检索父
标记下的
标记内的 html 部分。 如果你的DIV有属性,你可以花哨地使用xpath。
例如,假设您有一个包含多个 DIV 的页面,但您想要的页面如下所示:
<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,并且对使用 xpath 相当陌生,但到目前为止它对我有用。