我正在尝试用类来抓住div:'product'。问题是,一些带有“产品”类的div也有“产品小”这个类。因此,当我使用xpath('//div[@class='product']')
时,它只捕获具有一个类而不是多个的div。我怎么能用scrapy做到这一点?
示例:
<div class='product'>
<div class='product product-small'>
答案 0 :(得分:9)
这也可以通过xpath
来解决。您只需使用contains()
:
//div[contains(concat(' ', normalize-space(@class), ' '), ' product ')]
虽然,是的,CSS selector
选项更紧凑,更易读。
答案 1 :(得分:7)
您应该考虑为查询的这一部分使用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选择器,如该页面上的示例所示。