标签的Scrapy提取值

jv4diomz  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(127)

我正在做我的scrapy代码,我必须从网站https://lemkus.com/collections/maylee/products/hannah-green-cord-pants?variant=43116172181756提取数据
现在,输出应类似于如果项目缺货,则显示out_of_stock =“True”沿着尺寸,否则不显示out_of_stock
示例JSON输出:

"skus": [
  {
    "currency": "ZAR",
    "out_of_stock": true,
    "price": 850.00,
    "size": "8"
  },
  {
    "currency": "ZAR",
    "price": 850.00,
    "size": "10"
  },
  {
    "currency": "ZAR",
    "out_of_stock": true,
    "price": 850.00,
    "size": "12"
  },
  {
    "currency": "ZAR",
    "price": 850.00,
    "size": "14"
  }

网站的HTML代码为:

<fieldset class="fieldset-var  unavailable-product" data-var-id="43116172181756">

          <input class="js-variant-radio" name="id" type="radio" id="variant-1" value="43116172181756" data-inventory-qty="0">
          <label for="variant-1">8</label>
        </fieldset>  

        <fieldset class="fieldset-var variant-active " data-var-id="43116172214524">

          <input class="js-variant-radio" name="id" type="radio" id="variant-2" value="43116172214524" data-inventory-qty="1">
          <label for="variant-2">10</label>
        </fieldset>  

        <fieldset class="fieldset-var  unavailable-product" data-var-id="43116172247292">

          <input class="js-variant-radio" name="id" type="radio" id="variant-3" value="43116172247292" data-inventory-qty="0">
          <label for="variant-3">12</label>
        </fieldset>  

        <fieldset class="fieldset-var  " data-var-id="43116172280060">

          <input class="js-variant-radio" name="id" type="radio" id="variant-4" value="43116172280060" data-inventory-qty="1">
          <label for="variant-4">14</label>
        </fieldset>

好的,那么在上面的HTML代码中,看看标签“data-inventory-qty”在哪里等于零,在一些字段中它大于0。我想做的是,如果data-inventory-qty=“0”,Show out_of_stock ='True',否则不显示缺货
我有提取货币、价格和尺寸的逻辑,我只需要通过提取data-inventory-qty的值或使用其他可能有效的属性来获取out_of_stock。
到目前为止,我已经完成的out_of_stock代码的一部分是

items=response.xpath('//div//form//div//fieldset//input[@data-inventory-qty])'.getall()

我需要像有4个大小在上面的代码,所以使4个数据的列表。如果数据库存数量是0与第一个项目,然后追加'真'在列表中,否则追加'在列表中。
因此,上述HTML列表应类似于['','True','','True']

xwbd5t1u

xwbd5t1u1#

像这样的东西?

lst = response.xpath('//input[@class="js-variant-radio"]/@inventory-qty').getall()
result = [True if not int(i) else '' for i in lst]
print(result)

输出

[True, '', True, '']

相关问题