Когда я запускаю код локально и пытаюсь извлечь данные из URL, а затем проанализировать его, чтобы текст работал все правильно.
Когда я запускаю точно такой же код на удаленном сервере и пытаюсь извлечь данные из URL-адреса ошибки HTTP Error 403: Forbidden
происходит
Ответы на вопросы: Ошибка HTTP 403 в Python 3 Web Scraping, urllib2.HTTPError: Ошибка HTTP 403: запрещено помогло мне, когда я попытался запустить его локально, и все работает нормально.
Знаете ли вы, что может отличаться при извлечении данных изудаленный сервер, в то время как код одинаков (локально и на сервере) и способ выполнения кода одинаков, но результат абсолютно другой?
URL-адрес, который я хочу получить: url=https://bithumb.cafe/notice
Код, который я пытался использовать для извлечения данных (если он работает, второй нет)
try:
request = urllib.request.Request(url)
request.add_header('User-Agent', 'cheese')
logger.info("request: {}".format(request))
content = urllib.request.urlopen(request).read()
logger.info('content: {}'.format(content))
decoded = content.decode('utf-8')
logger.info('content_decoded: {}'.format(decoded))
return decoded
except Exception as e:
logger.error('failed with error message: {}'.format(e))
return ''`
секундаспособ извлечения данных (также работает локально, но на удаленном сервере нет):
class AppURLopener(urllib.request.FancyURLopener):
version = "Mozilla/5.0"
метод:
try:
opener = AppURLopener()
response = opener.open(url)
logger.info("request response: {}. response type: {}. response_dict: {}"
.format(response, type(response), response.__dict__))
html_response = response.read()
logger.info("html_Response".format(html_response))
encoding = response.headers.get_content_charset('utf-8')
decoded_html = html_response.decode(encoding)
logger.info('content_decoded: {}'.format(decoded_html))
return decoded_html
except Exception as e:
logger.error('failed with error message: {}'.format(e))
return ''