仅忽略某些 div 中的元素

Ignore element inside only certain divs

我编写了一个基本的网络抓取工具,可以从网页中提取一小段文本并将它们放入列表中。我的问题是页面上出现了动态广告并弄乱了列表。 我抓取的页面是 Yelp 餐厅列表页面。

我提取了公司名称(公司名称)并将其添加到列表中,它工作正常,但是当广告出现时,抓取工具也提取了公司名称。

这是结构,但我不知道如何忽略 'AD element' 并只抓取正常的公司名称。我已经将其削减了很多并删除了 'unimportant' 元素。

这是一个广告:

<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"> 中的公司名称,而只 select regular-search-result class 中的其他公司名称。 我想不通。至少有人能指出我正确的方向吗?可能吗?

我明白了。不难,就是看不到答案。

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