While Not Loop for empty list in python

While Not Loop for empty list in python

我正在向服务器发出请求...无论出于何种原因(超出我的理解),服务器都会给我一个状态代码 200,但是当我使用 Beautiful Soup 从 html,没有任何返回。它只发生在分页的第一页。

为了解决已知错误,我必须循环直到列表不为空。

这行得通,但很笨重。有一个更好的方法吗?知道我必须强制请求,直到列表包含一个项目。

# look for attractions
attraction_list = soup.find_all(attrs={'class': 'listing_title'})
while not attraction_list:
    print('the list is empty')
    try:
        t = requests.Session()
        t.cookies.set_policy(BlockAll)
        page2 = t.get(search_url)
        print(page2.status_code)
        soup2 = BeautifulSoup(page2.content, 'html.parser')
        attraction_list = soup2.find_all(attrs={'class': 'listing_title'}) 
    except:
        pass

我想到了这个。

attraction_list = soup.find_all(attrs={'class': 'listing_title'})
while not attraction_list:
    print('the list is empty')
    for q in range(0, 4):
        try:
            t = requests.Session()
            t.cookies.set_policy(BlockAll)
            page2 = t.get(search_url)
            print(page2.status_code)
            soup2 = BeautifulSoup(page2.content, 'html.parser')
            attraction_list = soup2.find_all(attrs={'class': 'listing_title'})
        except Exception as str_error:
            print('FAILED TO FIND ATTRACTIONS')
            time.sleep(3)
            continue
        else:
            break

它会尝试 4 次来拉动景点,如果 attractions_list 以有效列表结束,它就会中断。够好了。