我的If语句似乎不起作用

时间:2019-04-25 21:43:24

标签: python beautifulsoup

在继续操作之前尝试验证标签/数据值是否存在,并不断获取索引错误

这是我的那行不起作用     如果len(data ['descriptive'] [0] ['partNumber'])> 0:

下面是我尝试做的最新逻辑

    jvscript = soup.select_one('#skuDescriptivattribute').text
    prdDts = soup.find_all('div',class_="product-details") 

    if len(jvscript) > 0:
        data = jvscript
        data = json.loads(data)
        if len(data['descriptive'][0]['partNumber']) > 0:
            dets['sku'] = data['descriptive'][0]['partNumber']
        else:
            print("SKU NOT FOUND")
    elif len(prdDts) > 0:
        print("Out Of Stock")
    else:
        print("No Sku Available")

我要检查的是该“ partnumber”标记/值是否存在。如果确实抓住了它,如果没有抓住它,那么将填充一条简单的罐头消息

运行时控制台中的错误:

if len(data['descriptive'][0]['partNumber']) > 0:

IndexError: list index out of range

如果我尝试下面的其他建议,则会收到此错误:

if 'partNumber' in data['descriptive'][0]:

IndexError: list index out of range

现在我在建议之后收到此错误,然后再次针对列表尝试

jvscript = soup.select_one('#skuDescriptivattribute').text
AttributeError: 'NoneType' object has no attribute 'text'

基本上,我想在继续之前检查页面上是否存在标签或数据。我对2655个网址运行了我的Spider,然后打开了结果文件,我发现大多数具有上述通用消息的记录都不存在,并且由于其他原因,所以这就是我尝试添加的原因上面的逻辑,以便我可以验证存在哪些标记,因此我知道如何填充值列表并进行相应的保存。.我宁可向用户提供有用的消息,然后只是“ Sku go here”的通用占位符

1 个答案:

答案 0 :(得分:0)

您可以像这样检查字典中是否存在'partNumber':

if 'partNumber' in data['descriptive'][0]:
    ...

EDIT删除了不必要的.keys