2017-08-30 91 views
1

例如鑑於這種urlscrapy css選擇器鏈如何表示當前節點?

我想獲得賣家的DIV

使用XPath,首先我用CSS來得到一個特定的賣家行,然後我用「./」來指代當前節點,那麼我可以得到(5) div放在我的目標div(行)之後。 B的

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

結果:

<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   '> 

我試過這個但得到一個錯誤r:

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

如何用css引用當前節點? :D感謝您的幫助!

回答

1

你不能在最後沒有XPATH選擇器。

所以你用的是正確的

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

由於CSS沒有提及當前節點或父節點的話,你就必須只使用XPath。

+0

感謝您澄清我的難題! – Tianqing