Почему не работает функция? Использованы cUrl, requests, re, BeautifulSoup, urllib.parse.quote_plus итерация по offset

Не могу понять, почему функция не выполняется. Это учебная задача, поэтому использован cUrl, а не API.

По смыслу мы задаём запрос и число групп ВКонтакте, которое нам должен выдать поисковик. С функциями как таковыми я сталкиваюсь впервые поэтому return не писал.

Ячейка с кодом (я работаю в Jupyter Notebook) не завершается ошибкой, интерраптом или кёрнелом, выполняется до конца. В Jupyter print(request) показывает, что он правильно энкодит строку, принт по строкам данных не идёт. В GoogleColab не работают ни print, ни display по request

def VKGroupSearcher(request='Python', size=120):
    offset = 0 # make default value to offset
    # import libraries (to soft copy func in another notebook)
    import requests
    import re
    from bs4 import BeautifulSoup
    import urllib.parse
    
    # Encode UTF-8 string in URL-decode for payload
    request = urllib.parse.quote_plus(request) 
    display(request)
    # create empty lists to fill by data
    titles = list()
    links = list()
    members = list()
    
    # do this cycle while volume of data not reached value = second par of func (size, default value=120)
    while len(titles) > size: 
        
        #prepare to make payload with our values
        url = "https://vk.com/al_search.php"
        bs = 'act=show_more&al=1&al_ad=0&c%5Bq%5D=%D0%A7%D0%B5%D0%BB%D1%81%D0%B8&c%5Bsection%5D=communities&offset='
        ls = '&query_id=8487084244853056841&real_offset='
        
        payload='act=show_more&al=1&al_ad=0&c%5Bq%5D='+request+'&c%5Bsection%5D=communities&offset='+str(offset)+'&query_id=8487084244853056841&real_offset='+str(offset)
        
        headers = {
          'authority': 'vk.com',
          'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 OPR/72.0.3815.400',
          'x-requested-with': 'XMLHttpRequest',
          'content-type': 'application/x-www-form-urlencoded',
          'accept': '*/*',
          'origin': 'https://vk.com',
          'sec-fetch-site': 'same-origin',
          'sec-fetch-mode': 'cors',
          'sec-fetch-dest': 'empty',
          'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
          'cookie': 'remixlang=0; remixstid=410050341_WXoC4nrzgM50ZFRz0Opo19adR4p9UgFI3aLrE5ma92s; remixflash=0.0.0; remixscreen_width=1920; remixscreen_height=1080; remixscreen_depth=24; remixscreen_orient=1; remixdt=0; remixusid=ZmRjMTczYjc0Njc1ZmRjMjNkNWY0MTc3; remixab=1; remixfeed=*.*.*.*.*.*.ph.photos%2Cvideos%2Cclips%2Cfriends%2Cgroups%2Cpodcasts%2Ccoronavirus%2Cukraine%2Cqazaqstan%2Cfootball%2Cphoto; remixscreen_dpr=1; remixmdevice=1920/1080/1/u0021u0021-u0021u0021u0021u0021; remixdark_color_scheme=1; remixcolor_scheme_mode=auto; remixff=101; remixgp=a9abd98da7e122a65a5d7b5f1e27c742; remixua=41%7C-1%7C104%7C149565787; remixrefkey=ac7597979ed97d5c31; remixscreen_winzoom=1; remixbdr=1; remixsid=5c89c7cbc204db9e61f852a68b7949030faa5c8f2b9fe40daf99dda858a75; remixseenads=0; remixjsp=%7B%22id%22%3A%22kifikxoq.ac%22%2C%22loc%22%3A%22https%3A//vk.com/search%3Fc%255Bper_page%255D%3D40%26c%255Bq%255D%3D%25D0%25A7%25D0%25B5%25D0%25BB%25D1%2581%25D0%25B8%26c%255Bsection%255D%3Dcommunities%22%2C%22events%22%3A%5B%5B%22TTFCP%22%2C1416%2C%22search%22%2C%224g%22%2C%22105208%22%5D%2C%5B%22domComplete%22%2C4394%2C%22search%22%2C%224g%22%2C%22105208%22%5D%2C%5B%22domContentLoadedEventEnd%22%2C2282%2C%22search%22%2C%224g%22%2C%22105208%22%5D%2C%5B%22loadEventEnd%22%2C4394%2C%22search%22%2C%224g%22%2C%22105208%22%5D%2C%5B%22TTI%22%2C5962%2C%22search%22%2C%224g%22%2C%22105208%22%5D%5D%7D'
        }
    
        response = requests.request("POST", url, headers=headers, data=payload)
    
        # make our raw data as text and prepare to BS
        page = response.text
        # In data we have garbage with escape character. Clean it!
        page = page.replace('\\', '')
        page = page.replace('\\n', '')
    
        soup = BeautifulSoup(page)
        
        # Find div we need and parse this one and append to our lists
        result = soup.findAll('div', {'data-sec':'groups'})
    
        for res in result:
            titles.append(res.find('img')['alt'])
            links.append(res.find('a')['href'])
            members.append(re.sub(r'\D', '', res.find('div', {'class':'info'}).text))
            print(res.find('img')['alt']), res.find('a')['href'], re.sub(r'\D', '', res.find('div', {'class':'info'}).text)
    
        offset +=40

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