¿Cómo puedo encontrar una tabla después de una cadena de texto usando BeautifulSoup en Python?

Estoy tratando de extraer datos de varias páginas web que no son uniformes en la forma en que muestran sus tablas. Necesito escribir un código que busque una cadena de texto y luego ir a la tabla que sigue inmediatamente a esa cadena de texto específica. Entonces quiero extraer el contenido de esa tabla. Esto es lo que tengo hasta ahora:

from BeautifulSoup import BeautifulSoup, SoupStrainer
import re

html = ['<html><body><p align="center"><b><font size="2">Table 1</font></b><table><tr><td>1. row 1, cell 1</td><td>1. row 1, cell 2</td></tr><tr><td>1. row 2, cell 1</td><td>1. row 2, cell 2</td></tr></table><p align="center"><b><font size="2">Table 2</font></b><table><tr><td>2. row 1, cell 1</td><td>2. row 1, cell 2</td></tr><tr><td>2. row 2, cell 1</td><td>2. row 2, cell 2</td></tr></table></html>']
soup = BeautifulSoup(''.join(html))
searchtext = re.compile('Table 1',re.IGNORECASE) # Also need to figure out how to ignore space
foundtext = soup.findAll('p',text=searchtext)
soupafter = foundtext.findAllNext()
table = soupafter.find('table') # find the next table after the search string is found
rows = table.findAll('tr')
for tr in rows:
    cols = tr.findAll('td')
    for td in cols:
        try:
            text = ''.join(td.find(text=True))
        except Exception:
            text = ""
        print text+"|",
print

Sin embargo, me sale el siguiente error:

    soupafter = foundtext.findAllNext()
AttributeError: 'ResultSet' object has no attribute 'findAllNext'

Existe una manera fácil de hacer esto usando BeautifulSoup?

Respuestas a la pregunta(1)

Su respuesta a la pregunta