2010-07-31 67 views
0

我正在循環表中的錶行,但第一行或第二行沒有我正在尋找的元素(它們是用於表列標題等)。使用BeautifulSoup,如何防範元素未被發現?

因此,在說出第三個表格行之後,表格單元格(td)中就有我正在尋找的元素。

例如

td[0].a.img['src'] 

但調用此失敗,因爲前幾行沒有這個。

How can I guard against these cases so my script doesn't fail? 

我得到這樣的錯誤:

nonetype object is unsubscriptable 

回答

4

最簡單和最清晰的,如果 「一致」 想你的代碼:

theimage = td[0].a.img 
if theimage is not None: 
    use(theimage['src']) 

或者,最好是將None支票您自己的功能,例如:

def getsrc(image): 
    return None if image is None else image['src'] 

並使用getsrc(td[0].a.img)

1

從TR開始:

for td in tr.findChildren('td'): 
    img = td.findChild('img') 
    if img: 
     src = img.get('src', '') # return a blank string if there's no src attribute 
     if src: 
      # do something with src