我目前正在编写python脚本,并且遇到了无尽的循环。类似的代码可以正常工作,但不能:
while True:
print ("test")
sleep(2)
try:
doc = html.fromstring(page.content)
XPATH_PRICE = '//div[@id="product_detail_price"]//content()'
print(XPATH_PRICE)
RAW_PRICE = doc.xpath('//div[@id="product_detail_price"]')[0].values()[4]
print("RAW PRICE:")
print(RAW_PRICE)
PRICE = ' '.join(''.join(RAW_PRICE).split()).strip() if RAW_PRICE else None
print(PRICE)
data = {
'PRICE': PRICE,
'URL': url,
}
return data
except Exception as e:
print e
答案 0 :(得分:4)
更改此部分:
except Exception as e:
print e
对此:
except Exception as e:
print(e)
break
如果在捕获异常的过程中break
正在玩,似乎没有必要拥有while True
,请删除此部分:
while True:
print ("test")
sleep(2)
但是如果您使用while True
方法,请将break state
放在循环中的某个位置:
while True:
print ("test")
sleep(2)
try:
doc = html.fromstring(page.content)
if some_cond:
break
编辑:
让我尝试使其更简单。我们有两种方式:
第一种方法:
def some_function():
try:
#Your expected code here
return True
except:
# will come to this clause when an exception occurs.
return False
第二种方法:
while True:
if some_cond
break
else:
continue
考虑到您的代码,我建议选择第一种方法。
OR :
如果意图是保持try
的状态,除非有特定的条件,而不是break
例外:
bFlag = False
while bFlag == False:
try:
if some_cond:
bFlag = True
except:
continue