Используя BeautifulSoup, как защитить от элементов, которые не найдены?

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

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

например

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

Но вызов этого невозможен, поскольку первые несколько строк этого не имеют.

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

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

 nonetype object is unsubscriptable 

2 Solutions collect form web for “Используя BeautifulSoup, как защитить от элементов, которые не найдены?”

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

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

Начиная с 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 
  • Разбор HTML-файлов в Python
  • Комплексный прекрасный суп-запрос
  • Python Find & Replace Beautiful Soup
  • Trip Advisor Скребок «moreLink»
  • Поиск нескольких атрибутов в теге span в Python
  • Python BeautifulSoup: синтаксический анализ нескольких таблиц с тем же именем класса
  • Путаница для чтения содержимого таблицы html с помощью BeautifulSoup?
  • Селен против BeautifulSoup для веб-соскабливания
  • Python - лучший язык программирования в мире.