Scrapy grab div with multiple classes?

后端 未结 2 2022
伪装坚强ぢ
伪装坚强ぢ 2021-02-20 04:14

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

相关标签:
2条回答
  • 2021-02-20 04:27

    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.

    0 讨论(0)
  • 2021-02-20 04:31

    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.

    0 讨论(0)
提交回复
热议问题