I haven't used HTML::TableExtract myself, but my reading of the man page leads me to think that in a single parse/pass over the input it will extract all tables that match a given set of constraints (or specify no constraints and have it extract all tables, period). After that, you can use "count" and "depth" values as coordinates in order to fetch the content of specific tables from the data structure that it uses to store all the tables that were extracted.
So if the tables you are interested in happen to share a common set of column headings, you can just use the "headers" parameter when creating a single "TableExtract" object, then use that one object repeatedly in a loop to fetch the contents for each of the tables that have that set of headers. Check out the "table_states()" method.