捕获异常,运行替代代码&从Line Python继续

时间:2013-10-30 11:58:58

标签: python selenium python-3.x selenium-webdriver beautifulsoup

我目前正在使用Selenium& BeautifulSoup提取数据,有时不同页面的格式可能略有不同,最多3种不同类型的html差异,当它来到一个不同的页面时,我无法帮助它因为它给了我一个例外,因为它数据不存在。

我可以执行类似Exception = AttributeError的操作,尝试此代码并从停止的位置继续吗?

AttributeError: 'NoneType' object has no attribute 'text'

这是当前的代码

  price = soup.find('li', {'id' :'J_PromoPrice'})
        priced = price.find('strong', {'class' :'tb-rmb-num'}).text
        if priced == "":
           priced = price.find('strong', {'class' :'tb-rmb-num'}).text
        else:
           print ("No Normal Price Found")

正如你所看到的,已经存在一组IF ELSE来检测它是否为空,如果为空=找到另一个文本标签,它将处理2种不同类型的html,但第3个我正面临的问题是它甚至没有TAG,但确实有它在其他地方。

简而言之,我正试图从其他地方获取文本,如果我点击此异常,那么继续从我脸上拍打异常的脚本。

更新完整跟踪

Traceback (most recent call last):
  File "C:\Users\X\Desktop\Python\python.py", line 521, in <module>
    getLoadItem()
  File "C:\Users\X\Desktop\Python\python.py", line 57, in getLoadItem
    getLoadItemAnalyse(loop['ID'],loop['Link'])
  File "C:\Users\X\Desktop\Python\python.py", line 236, in getLoadItemAnalyse
    priced = price.find('strong', {'class' :'tb-rmb-num'}).text
AttributeError: 'NoneType' object has no attribute 'text'

1 个答案:

答案 0 :(得分:2)

您可以使用try/except阻止。

例如:

price = soup.find('li', {'id' :'J_PromoPrice'})
try:
    priced = price.find('strong', {'class' :'tb-rmb-num'}).text
    if priced == "":
        priced = price.find('strong', {'class' :'tb-rmb-num'}).text
    else:
        print ("No Normal Price Found")
except AttributeError:
     # Try this code instead

这基本上意味着,“好的尝试这段代码,可能会陷入困境”,在这种情况下,请在catch块下面做什么。