带多个类的Scrapy grab div?

2024-04-20 08:47:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着抓住班上的div's:“产品”。问题是,有些div的类“product”也有类“product small”。所以当我使用xpath('//div[@class='product']')时,它只捕获一个类的div,而不是多个。我该怎么对付斯皮奇?

示例:

  • 捕获:<div class='product'>
  • 无法捕获:<div class='product product-small'>

Tags: div示例产品productxpathclasssmall
2条回答

您应该考虑在查询的这一部分使用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选择器,如该页的示例所示。

这也可以用xpath来解决。你只需要使用^{}

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

不过,是的,CSS selector选项更紧凑,可读性更强。

相关问题 更多 >