Scrapy 抓取 div 与多个 类?
Scrapy grab div with multiple classes?
我正在尝试使用 class 获取 div:'product'。问题是,一些带有 class 'product' 的 div 也有 class 'product-small'。因此,当我使用 xpath('//div[@class='product']')
时,它只捕获带有一个 class 的 div,而不是多个。我怎样才能用 scrapy 做到这一点?
示例:
- 渔获量:
<div class='product'>
- 没有捕捉到:
<div class='product product-small'>
您应该考虑对这部分查询使用 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
解决。您只需要使用 contains()
:
//div[contains(concat(' ', normalize-space(@class), ' '), ' product ')]
不过,是的,CSS selector
选项更紧凑、更易读。
我正在尝试使用 class 获取 div:'product'。问题是,一些带有 class 'product' 的 div 也有 class 'product-small'。因此,当我使用 xpath('//div[@class='product']')
时,它只捕获带有一个 class 的 div,而不是多个。我怎样才能用 scrapy 做到这一点?
示例:
- 渔获量:
<div class='product'>
- 没有捕捉到:
<div class='product product-small'>
您应该考虑对这部分查询使用 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
解决。您只需要使用 contains()
:
//div[contains(concat(' ', normalize-space(@class), ' '), ' product ')]
不过,是的,CSS selector
选项更紧凑、更易读。