繁体   English   中英

TypeError: 'NoneType' object is not iterable 即使它说它是一个字符串,为什么会这样?

[英]TypeError: 'NoneType' object is not iterable even though it says it's a string, why is that so?

此功能的目标是检查亚马逊商品是否不可用。

def check(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
        page = requests.get(url, headers = headers)

        doc = html.fromstring(page.content)
        XPATH_AVAILABILITY = '//div[@id ="availability"]//text()'
        RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY)
        AVAILABILITY = ''.join(RAw_AVAILABILITY).strip()
        if any(re.match(r'unavailable', str(AVAILABILITY), re.IGNORECASE)):
            return "UNAVAILABLE"
        else:
            return "AVAILABLE"

我检查了AVAILABILITY变量的type() (它是字符串),当项目不可用时它看起来像这样:

Currently unavailable.
        
        
    
    
    
    



    
    
         
        
        
            We don't know when or if this item will be back in stock.

并且像这样(类型:字符串)可用时:

In Stock. In stock.

这就是为什么我选择使用正则表达式来检测输出中的“不可用”。 但错误说:

文件“scra.py”,第 68 行,在

如果有的话(re.match(r'unavailable', check(i), re.IGNORECASE)):

TypeError: 'NoneType' 对象不可迭代

它永远不会输出“无”,这就是我感到惊讶的原因。 请帮我解决这个问题。

any(x)遍历x并在找到计算结果为 true 的元素时返回True ,如果到达最后则返回False

如果找到匹配项,则re.match返回Match对象或None

您的内容不得与正则表达式匹配, re.match返回None并且any都无法对其进行迭代。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM