2017-07-07 39 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