[英]TypeError: 'NoneType' object is not iterable even though it is set
[英]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.