只有在检查课程是否退出后,scrapy才会刮擦

时间:2015-02-12 12:13:30

标签: python scrapy

我创建了一个抓取工具来抓取网页并将项目存储在mysql数据库中。我在抓取网页的固定部分时遇到了一个小问题。我想检查一个具有某个类名的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]

1 个答案:

答案 0 :(得分:1)

由于您在提取文本之前要执行测试,因此可以在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]`