scrapy 仅在检查 class 是否退出后才抓取

scrapy scrape only after checking if a class exits

我创建了一个爬虫来爬取网页并将项目存储在 mysql 数据库中。我在抓取网页的固定部分时遇到了一个小问题。我想检查具有特定 class 名称的 div 是否存在于 div 中,如果它存在,我将存储根 div。

<div class="page-col-1-2-right">
 <div class="block">
  <h2>Produktbewertung und Test</h2>
  <div class="area spacing ingredient-rating"></div>
 </div>

 <div class="block">
  <h2>Artikel zu Nasentropfen & Schnupfen</h2>
  <div class="cell clickable teaser-large" data-id="62151"></div>
 <div>
</div>

在上面的代码中,我希望 div 块当且仅当它有

<div class="area spacing ingredient-rating"></div>

里面。由于我正在抓取的网站的某些页面可能有或可能没有所需的块,所以我下面的代码不起作用。

response.xpath('//div[contains(@class, "page-col-1-2-right")]/div[contains(@class, "block")][2]').extract()[0]

由于在提取文本之前要执行测试,因此可以在 xpath 中使用 and 表达式。所以它将是 response.xpath(test1 and test2).extract()[0]

将它应用到您的代码中:

response.xpath('//div[contains(@class, "page-col-1-2-right")]/div[contains(@class, "block")][2]' and '//div[contains(@class, "ingredient-rating")]').extract()[0]`