Scrapy agarrar div con múltiples clases?

Estoy tratando de agarrar div’s con la clase: ‘producto’. El problema es que algunos de los divs con clase ‘producto’ también tienen la clase ‘producto-pequeño’. Entonces, cuando uso xpath('//div[@class='product']') , solo captura los divs con una clase y no con varios. ¿Cómo puedo hacer esto con scrapy?

Ejemplo:

  • Capturas:
  • No captura:

Debería considerar usar un selector de CSS para esta parte de su consulta.

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

 from scrapy import Selector sel = Selector(text='
I am a product!
') print sel.css('.product').extract()

Si lo necesita, puede encadenar los selectores de CSS y XPath, como en el ejemplo de esa página.

Esto también podría ser resuelto con xpath . Solo necesitas usar contains() :

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

Aunque, sí, la opción de CSS selector es más compacta y legible.