Python 具有多个类的Scrapy grab div?

Python 具有多个类的Scrapy grab div?,python,html,xpath,web-scraping,scrapy,Python,Html,Xpath,Web Scraping,Scrapy,我正试着用“产品”这个类来抓住div。问题是,一些“product”类的div也有“product small”类。因此,当我使用xpath('//div[@class='product']')时,它只使用一个类而不是多个类捕获div。我怎么能用scrapy做这个 例如: 捕获: 未捕获: 您应该考虑使用CSS选择器来进行查询的这个部分。 从刮片导入选择器 sel=选择器(text='I am a product!') 打印sel.css('.product').extract() 如果

我正试着用“产品”这个类来抓住div。问题是,一些“product”类的div也有“product small”类。因此,当我使用xpath('//div[@class='product']')时,它只使用一个类而不是多个类捕获div。我怎么能用scrapy做这个

例如:

  • 捕获:
  • 未捕获:

您应该考虑使用CSS选择器来进行查询的这个部分。

从刮片导入选择器
sel=选择器(text='I am a product!')
打印sel.css('.product').extract()

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

这也可以通过
XPath
解决。您只需要使用:


不过,是的,
CSS选择器
选项更紧凑、可读性更强。

您的xpath选择器还将拾取具有
not-a-product
类的元素。@barraponto是的,但当前问题的输入不包含具有
not-a-product
类的元素。谢谢。选择器已经被编辑以执行类名的精确匹配(c.f.)。我已经看过这个文档,但我认为它没有用,因为div中的内容是动态加载的,在这种情况下我们能做什么?
from scrapy import Selector
sel = Selector(text='<div class="product product-small">I am a product!</div>')
print sel.css('.product').extract()
//div[contains(concat(' ', normalize-space(@class), ' '), ' product ')]