Приложение Heroku для очистки веб-страниц (обычно, но не всегда) выдает ошибку 403 на большинстве веб-сайтов - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть приложение для очистки веб-страниц, размещенное на 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)
...