2015-12-02 162 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