Вам нужна дополнительная переменная, чтобы указать, что анализатор только что прошел комментарий, чтобы вы могли сохранить ссылку из первой ссылки после него.
def __init__(self, *args, **kwargs):
# ...
self.first_link_after_comment = False
Затем, когда вы сталкиваетесь с комментарием, флаг должен быть переключен.
def handle_comment(self, data):
if data.strip() == '/topOfPage':
self.first_link_after_comment = True
Когда вы обрабатываете открывающий тег, вы должны обязательно пропустить его, если синтаксический анализ не прошел за комментарий
def handle_starttag(self, tag, attrs):
if not self.first_link_after_comment:
return
# ...
И наоборот, когда вы обрабатываете закрывающий тег, вы хотите подтвердить, что миссия выполнена.
def handle_endtag(self, tag):
if tag == 'a' and self.in_linktag: # ignore '<a name=""...'
self.in_linktag = False
self.first_link_after_comment = False
Наконец, когда вы добавляете данные, просто убедитесь, что это не просто строка, которая пуста или содержит только пробелы.
def handle_data(self, data):
if self.in_linktag and data.strip():
self.url_cache[-1].append(data)
А вот и вы.
$ your_script.py
[['http://test']]