У меня есть приложение для очистки веб-страниц, размещенное на heroku, которое я использую для очистки около 40 веб-страниц компании. 27 из них почти всегда дают мне 403 ошибки на героку, но каждая страница работает нормально, если я запускаю код локально.
Приблизительно после 25 минут работы приложения и получения 403 ошибок (временные рамки сильно меняются) все страницы волшебным образом начинают работать, но после перезапуска приложения снова возвращаются на 403 секунды.
Как я могу предотвратить эти ошибки 403 вообще? Соответствующий код следующим образом:
from bs4 import BeautifulSoup as soup
import urllib.request as ureq
from urllib.error import HTTPError
import time
def scraper(url):
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0'
ufile0 = ureq.Request(url, headers={'User-Agent': user_agent,
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Referer': 'https://www.google.com/'})
try:
ufile1 = ureq.urlopen(ufile0)
except HTTPError as err:
if err.code == 504:
print('504, need to drop it right now')
return
elif err.code == 403:
print('403ed oof')
return
else:
print('unknown http error')
raise
text = ufile1.read()
ufile1.close()
psoup = soup(text, "html.parser")
while 1:
url='http://ir.nektar.com/press-releases?page=0'
scraper(url)
time.sleep(7)