2015-12-02 111 views
0

我有一个基本的网页刮板,它从网页中拉出一小段文本并将它们放入列表中。我的问题是,有动态广告出现在页面上,并弄乱了列表。 我正在刮的页面是一个Yelp餐厅列表页面。只忽略某些div内的元素

我拔出biz-name(商业名称)并将其添加到列表中,并且它工作正常,但是当广告出现时,scraper也会拉动biz-name。

这是结构,但我不知道如何忽略'AD元素',只是刮普通的商业名称。我削减了很多,删除了“不重要”的元素。

这是一则广告:

<li class="yloca-search-result"> 
    ... 
     ... 
     <a class="biz-name"...><span>San Lorenzo’s</span></a> 
</li> 

这是一个常规列表:

<li class="regular-search-result"> 
    ... 
     ... 
     <a class="biz-name"...><span>BigGrill</span></a> 
</li> 

我一直在努力使引入nokogiri忽略了企业名称的<li class="yloca-search-result">内,只能选择别人在regular-search-result类中。 我无法弄清楚。至少有人能指出我正确的方向吗?可能吗?

+0

您知道Yelp有一个[API](https://www.yelp.com/developers/documentation/v2/overview)旨在帮助您避免刮页吗?我建议利用它。 –

+0

@theTinMan我试过了,但它没有给出相同的结果,它仅限于许多结果。这显然更容易使用,但刮擦给了我更好的结果。 – boogiewonder

+0

请注意,他们的TOS可能禁止刮擦,因此您很有可能被禁止。 –

回答

0

我想通了。并不难,但我只是看不到答案。

ad = doc3.at_css("li.yloca-search-result") 
ad.remove 
+0

您可能想要使用'doc3.search('li.yloca-search-result')。unlink'。这将一次性删除页面中的所有广告。 –

+0

@theTinMan谢谢! – boogiewonder