scrapy 2.3 按类查询使用CSS
因为一个元素可以包含多个CSS类,所以按类选择元素的xpath方法相当冗长:
*[contains(concat(' ', normalize-space(@class), ' '), ' someclass ')]
如果你使用 @class='someclass' 如果只使用 contains(@class, 'someclass') 为了弥补这一点,如果元素具有共享字符串的不同类名,那么最终可能会得到更多想要的元素。 someclass .
事实证明,剪贴选择器允许您链接选择器,因此大多数时候,您都可以使用CSS按类选择,然后在需要时切换到XPath:
>>> from scrapy import Selector
>>> sel = Selector(text='<div class="hero shout"><time datetime="2014-07-23 19:00">Special date</time></div>')
>>> sel.css('.shout').xpath('./time/@datetime').getall()
['2014-07-23 19:00']
这比使用上面显示的详细的xpath技巧要干净。只要记住使用 . 在后面的xpath表达式中。