Python try / except: intentando múltiples opciones

Estoy tratando de raspar algo de información de páginas web que son inconsistentes sobre dónde se encuentra la información. Tengo un código para manejar cada una de varias posibilidades; Lo que quiero es probarlos en secuencia, entonces si ninguno de ellos funciona, me gustaría fallar con gracia y seguir adelante.

Es decir, en código psuedo:

try: info = look_in_first_place() otherwise try: info = look in_second_place() otherwise try: info = look_in_third_place() except AttributeError: info = "Info not found" 

Podría hacer esto con declaraciones de prueba anidadas, pero si necesito 15 posibilidades para intentarlo, ¡necesitaré 15 niveles de sangría!

Esto parece una pregunta tan trivial que siento que me estoy perdiendo algo, pero lo he buscado en el suelo y no puedo encontrar nada que parezca equivalente a esta situación. ¿Hay una manera sensible y pythonica de hacer esto?

EDITAR: A medida que aumenta la solución (bastante buena) de John, por brevedad, he escrito cada búsqueda arriba como una llamada de función única, mientras que en realidad suele ser un pequeño bloque de llamadas BeautifulSoup como soup.find('h1', class_='parselikeHeader') . Por supuesto, podría incluirlas en funciones, pero parece un poco poco elegante con bloques tan simples. Disculpe si mi taquigrafía cambia el problema.

Esta puede ser una ilustración más útil:

 try: info = soup.find('h1', class_='parselikeHeader').get('href') if that fails try: marker = soup.find('span', class_='header') info = '_'.join(marker.stripped_strings) if that fails try: (other options) except AttributeError: info = "Info not found" 

Si cada búsqueda es una función separada, puede almacenar todas las funciones en una lista y luego iterarlas una por una.

 lookups = [ look_in_first_place, look_in_second_place, look_in_third_place ] info = None for lookup in lookups: try: info = lookup() # exit the loop on success break except AttributeError: # repeat the loop on failure continue # when the loop is finished, check if we found a result or not if info: # success else: # failure