Я просматриваю строки таблицы в таблице, но первые 1 или 2 строки не содержат элементов, которые я ищу (они предназначены для заголовков столбцов таблицы и т. Д.).

Итак, после, скажем, третьей строки таблицы в ячейках таблицы (td) есть элементы, которые имеют то, что я ищу.

Например

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

Но вызвать это не удается, поскольку в первых нескольких строках этого нет.

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

Я получаю такие ошибки:

nonetype object is unsubscriptable
1
Blankman 31 Июл 2010 в 07:32

2 ответа

Лучший ответ

Самый простой и понятный, если вы хотите, чтобы ваш код был «в строчке»:

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).

5
Alex Martelli 31 Июл 2010 в 03:39

Начиная с 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
1
ars 31 Июл 2010 в 03:39