I am trying to grab div\'s with the class: \'product\'. The problem is, some of the div\'s with class \'product\' also have the class \'product-small\'. So when I use xpat
You should consider using a CSS selector for this part of your query.
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()
If you need to, you can chain CSS and XPath selectors, as in the example on that page.
This could be also solved with xpath
. You just needed to use contains():
//div[contains(concat(' ', normalize-space(@class), ' '), ' product ')]
Though, yes, the CSS selector
option is more compact and readable.