Scrapy 抓取 div 与多个 类?

Scrapy grab div with multiple classes?

我正在尝试使用 class 获取 div:'product'。问题是,一些带有 class 'product' 的 div 也有 class 'product-small'。因此,当我使用 xpath('//div[@class='product']') 时,它只捕获带有一个 class 的 div,而不是多个。我怎样才能用 scrapy 做到这一点?

示例:

您应该考虑对这部分查询使用 CSS 选择器。

http://doc.scrapy.org/en/latest/topics/selectors.html#when-querying-by-class-consider-using-css

from scrapy import Selector
sel = Selector(text='<div class="product product-small">I am a product!</div>')
print sel.css('.product').extract()

如果需要,您可以链接 CSS 和 XPath 选择器,如该页面上的示例所示。

这也可以用 xpath 解决。您只需要使用 contains():

//div[contains(concat(' ', normalize-space(@class), ' '), ' product ')]

不过,是的,CSS selector 选项更紧凑、更易读。