Как заполнить множество ссылками, которые спарсил? Сейчас на выходе пустой сет

Пишу поисковый движок. Экспериментирую с вариантами поиска. Сейчас реализую поиск по образцу краулера. Вначале собираю страницы (по ним потом будем искать), через регулярки очищаю спарсенные ссылки и жду, что сет заполнится ссылками, но этого не случается. Почему? Привожу начало кода

main_url = f'http://www.zrg74.ru/'

# прописываем типы браузеров, с которыми будем работать
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'

def get_page_text(url, user_agent, error_log=True): 
    headers = {'User-Agent': user_agent}
    response = requests.get(url, headers=headers, allow_redirects=True)
    if response.status_code == 200:
        page_text = response.text
        return page_text
    elif error_log:
        print(f'Ошибка! Response code: {response.status_code}')
        print(f'URL: {url}')
    return None

# собираем информацию со страницы:
page_text = get_page_text(main_url, USER_AGENT)
soup = BeautifulSoup(page_text)

# Очищаем ссылку — убираем лишние символы (например, уберем якоря а):
def clear_link(page_link):
    page_link = re.sub('^\/', '', page_link) # находим символ "/" в начале строки и меняем его на пустой символ
    # находим символы "#?"+"любой символ (кроме перевода строки)" - от одного раза и больше, 
    # меняем их на пустой символ:
    page_link = re.sub('[\#\?].+', '', page_link) 
    
    return page_link

# все ссылки будем хранить во множестве:
links = set()
for a in soup.find_all('a'):
    if not a.has_attr('href'):
        continue
    
    page_link = a.attrs['href']
    
    if re.search('^(http)', page_link):
        if main_url not in page_link or main_url == page_link:
            continue
    
    page_link = clear_link(page_link)
    
    if len(page_link) == 0:
        continue 
    
    page_link = main_url + page_link
    
    links.add(page_link)
links

В данном методе на выходе получаю set() либо {'http://www.zrg74.ru/#'}. А вот такой код у меня ранее сработал:

index=1
url = f'http://zrg74.ru/category/obshhestvo/page/{index}'
page_text = get_page_text(url, USER_AGENT)

from urllib.parse import urlparse
soup = BeautifulSoup(page_text)
posts_list = soup.find_all('div', {'class': 'jeg_post_excerpt'})  # jeg_post_excerpt  jeg_readmore
counter = 0
for p in posts_list:
    if not p.find('a').attrs['href'] is None:
        lnk = p.find('a').attrs['href']
    
        page_text = get_page_text(lnk, USER_AGENT)
        if page_text is None:
            continue
        
        
        urlSplit = urllib.parse.urlsplit(lnk)
        if counter == 0:
            dir_path = 'data/raw_pages/' + urlSplit.netloc + '/'.join(urlSplit.path.split('/')[:-1])
            makedirs(dir_path, exist_ok=False) # exist_ok=True - управление ошибкой
            with open(dir_path + '/' + urlSplit.path.split('/')[-1], 'w', encoding='utf-8') as f:
                f.write(page_text)
            counter+=1
        else:
            with open(dir_path + '/' + urlSplit.path.split('/')[-1], 'w', encoding='utf-8') as f:
                f.write(page_text)

Ответы (1 шт):

Автор решения: Сергей Шашко

Зачем так сложно? BeautifulSoup и без регулярок справляется. В русском сигменте утюба полно роликов про парсеры с помощью BeautifulSoup. Не поленисить их посмотреть для общего развития.

Ссылки на последние новости славного города З.

import requests
from bs4 import BeautifulSoup

main_url = f'http://www.zrg74.ru/'

# прописываем типы браузеров, с которыми будем работать
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'

def get_page_text(url, user_agent, error_log=True):
    headers = {'User-Agent': user_agent}
    response = requests.get(url, headers=headers, allow_redirects=True)
    if response.status_code == 200:
        with open('test.html', 'w', encoding='utf-8') as output_file:
            output_file.write(response.text)
        page_text = response.text
        return page_text
    elif error_log:
        print(f'Ошибка! Response code: {response.status_code}')
        print(f'URL: {url}')
    return None

page_text = get_page_text(main_url, USER_AGENT)
soup = BeautifulSoup(page_text, 'lxml')
links = soup.find('div', class_="jeg_posts jeg_load_more_flag").find_all('h3', class_="jeg_post_title")

for link in links:
    print (link.find('a').get('href'))
→ Ссылка