Вы пытались присвоить None для res и протестировать его как None в попытке-> кроме Timeout в цикле while?
import time
for x in range(1,3564):
res = None
while not res:
try:
res=requests.get(s+str(x),timeout=20)
except requests.exceptions.Timeout:
time.sleep(5) # wait 5 seconds and try again
soup=BeautifulSoup(res.text,'lxml')
listings=soup.findAll(class_='grid_element')
for listing in listings:
listing_name=listing.find('span',{'class':'h3 bold inline-block rmargin member-search-full-name'})
if isinstance(listing_name,Tag):
listing_name=listing_name.text.strip()
listing_description=listing.find('p',{'class':'small member-search-description'})
if isinstance(listing_description,Tag):
listing_description=listing_description.text.strip()
listing_location=listing.find('span',{'class':'small member-search-location rmargin rpad'})
if isinstance (listing_location,Tag):
listing_location=listing_location.text.strip()
full_dict={'Title':listing_name,'Description':listing_description,'Location':listing_location}
data.append(full_dict)
Итак, мы просто инициируем res как переменную None, проверяя, чтоон остается None и повторяет запрос, если положительный. Каждый раз, когда возникает исключение request.exceptions.Timeout, мы перехватываем его и ждем 5 секунд, прежде чем вернуться к циклу while.
Если в запросах возникает другое исключение, вы можете попробовать заменить строку исключений на:
except requests.exceptions.RequestException: