如何避免因Python中的错误而导致循环中断?

时间:2018-01-26 02:59:44

标签: python html python-3.x beautifulsoup

我正在通过网址列表运行循环,并且一些网址返回以下错误,这会导致我的循环中断,我想避免中断,只需转到我的列表中的下一个网址:

Traceback (most recent call last):
  File "C:\Users\alexa\Desktop\csv loop 2.py", line 28, in <module>
    price_clean = list(price_find.children)[0]
AttributeError: 'NoneType' object has no attribute 'children'

我的想法是引入if else语句来测试url中字符的存在,但这不起作用并仍然返回相同的错误:

if soup.find("$") != -1:
    price_find = soup.find(class_="price")
    price_clean = list(price_find.children)[0]
else:
    continue

关于如何解决这个问题的更好的想法?

1 个答案:

答案 0 :(得分:3)

您可以检查None或捕获例外

检查无

if soup.find("$") != -1:
    price_find = soup.find(class_="price")
    if price_find is not None:
        price_clean = list(price_find.children)[0]
else:
    continue

捕获异常

if soup.find("$") != -1:
    price_find = soup.find(class_="price")
    try:
        price_clean = list(price_find.children)[0]
    except AttributeError:
        pass
else:
    continue

你将能够继续循环