2017-07-07 44 views
0

任何想法如何提取「SKU」基於這個值,「的configId」的值相同的節點:「785877」
感謝鬥志旺盛的XPath查詢基於價值

response.xpath('//div[@class="c-quick-buy c-product-card__buy-button"]/@data-js-component-params').extract() 

數據提取

<div class="c-quick-buy c-product-card__buy-button" 

     data-js-component="quick-buy" 
     data-js-component-params='{ 
      "product": { 
       "sku": "NO225ELAQUDXANMY", 
       "skuSimple": "NO225ELAQUDXANMY-799443", 
       "price": "90.00", 
       "configId": "785877", 
       "ff": "1" 
      }, 
      "hasSize": false 
     }' 
    > 

回答

1

根據如何預見的是內在的JSON,你可以這樣做:

xpath_query = '//div[contains(@data-js-component-params, \'"configId": "785877"\')]/@data-js-component-params' 
js_data = response.xpath(xpath_query).extract_first() or '{}' 
json.loads(js_data).get('product',{}).get('sku') 

,你甚至可以更改查詢到

xpath_query = '//div[re:test(@data-js-component-params, \'"configId":\s+"785877"\')]/@data-js-component-params' 
+0

哇靠,我一直在谷歌和搜索這麼多,但沒有找到答案,你只是解決了我的問題。大拇指+1 – Rick