虽然Not循环为python中的空列表

时间:2018-01-12 00:20:30

标签: python while-loop empty-list

我正在向服务器发出请求......无论出于何种原因(超出我的理解),服务器将给我一个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

1 个答案:

答案 0 :(得分:0)

我想出了这个。

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

如果attractions_list以有效列表结束,它会尝试4次以获得吸引力,它会中断。够好了。