【问题标题】:scrapy css selector chain how to represent current node?scrapy css选择器链如何表示当前节点?
【发布时间】:2017-08-30 09:14:59
【问题描述】:

例如鉴于此url

我想得到卖家的div

使用 Xpath,首先我使用 css 获取特定的卖家行,然后使用 './' 来引用当前节点,然后我可以获得 (5) 个放置在目标 div(行)之后的 div。

b = response.css('div#olpOfferList div.a-row.a-spacing-mini.olpOffer')[1].xpath('./div')

b 的结果:

<Selector xpath='./div' data=u'<div class="a-column a-span2 olpPriceCol'>
<Selector xpath='./div' data=u'<div class="a-column a-span3 olpConditio'>
<Selector xpath='./div' data=u'<div class="a-column a-span3 olpDelivery'>
<Selector xpath='./div' data=u'<div class="a-column a-span2 olpSellerCo'>
<Selector xpath='./div' data=u'<div class="a-column a-span2 olpBuyColum'>

但是使用css,我不会在选择当前节点后如何引用当前节点

a = response.css('div#olpOfferList div.a-row.a-spacing-mini.olpOffer')[1].css('div > div')

结果:

<Selector xpath=u'descendant-or-self::div/div' data=u'<div class="a-column a-span2 olpPriceCol'>
<Selector xpath=u'descendant-or-self::div/div' data=u'<div class="a-column a-span3 olpConditio'>
<Selector xpath=u'descendant-or-self::div/div' data=u'<div class="a-section a-spacing-small">\n'>
<Selector xpath=u'descendant-or-self::div/div' data=u'<div class="a-column a-span3 olpDelivery'>
<Selector xpath=u'descendant-or-self::div/div' data=u'<div class="a-column a-span2 olpSellerCo'>
<Selector xpath=u'descendant-or-self::div/div' data=u'<div class="a-column a-span2 olpBuyColum'>
<Selector xpath=u'descendant-or-self::div/div' data=u'<div class="a-button-stack">\n           '>

我试过了,但出现错误:

a = response.css('div#olpOfferList div.a-row.a-spacing-mini.olpOffer')[1].css('> div')

如何使用 css 引用当前节点? :D 感谢您的帮助!

【问题讨论】:

标签: python css scrapy


【解决方案1】:

如果最后没有 XPATH 选择器,您将无法做到这一点。

所以你用的是正确的

b = response.css('div#olpOfferList div.a-row.a-spacing-mini.olpOffer')[1].xpath('./div')

由于 css 无法引用当前节点或父节点,因此您只能使用 XPath。

【讨论】:

  • 感谢您为我解惑!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 2022-01-22
  • 2020-04-23
相关资源
最近更新 更多