@theSever

Python requests не отдает 0 на несуществующем домене, как исправить?

Переношу программу с php на питон, создаю функцию:

#!/usr/bin/env python

# coding: utf-8

import requests

headers = {
           'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0',
           'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
           'Accept-Language' : 'en-en,ru;q=0.8,en-us;q=0.5,en;q=0.3',
           'Accept-Encoding' : 'gzip, deflate',
           'Connection' : 'keep-close',
          }

def pars_heder(url):
	r = requests.get(url, headers=headers)
	return r.status_code

print pars_heder('http://younglinux.info/')


Если домен существует то отдает 200, если страницы нет то 404 и тд, но если домена не существует (ну или не делегирован) то отдает какую-то байду, а в идеале нужно 0 что бы передавал.

Как добиться нужного результата?

PS
С питоном знаком только пару часов, так что для чайников.))

PS2
Отдает:
python 123.py
Traceback (most recent call last):
  File "123.py", line 19, in <module>
    print pars_heder('http://young444linux.info/')
  File "123.py", line 16, in pars_heder
    r = requests.get(url, headers=headers)
  File "C:\Python27\lib\site-packages\requests\api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Python27\lib\site-packages\requests\api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 475, in reques
t
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 596, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python27\lib\site-packages\requests\adapters.py", line 487, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='young444linux.info
', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<re
quests.packages.urllib3.connection.HTTPConnection object at 0x031BF030>: Failed
to establish a new connection: [Errno 11001] getaddrinfo failed',))
  • Вопрос задан
  • 1069 просмотров
Решения вопроса 1
@nirvimel
Это не "ерунда", а stacktrace, по причине не пойманного исключения ConnectionError, вылетевшего при попытке подключения к несуществующему домену. Надо перехватить исключение, чтобы вернуть определенное значение при ошибке.
from requests.exceptions import ConnectionError

def pars_header(url):
    try:
        r = requests.get(url, headers=headers)
        return r.status_code
    except ConnectionError:
        return 0
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект