我正在向服务器发出请求......无论出于何种原因(超出我的理解),服务器将给我一个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
答案 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次以获得吸引力,它会中断。够好了。