Я выполняю проверку состояния через огромный список ссылок и мой фрагмент кода выглядит следующим образом:питона словарь ошибки ключа не могут решить
link = 'http://xyz'
proxyDict = { "http" : "ip:80", "https" : "https://ip:443"}
r = requests.get(link, allow_redirects=False, verify=False)
http_status = r.status_code
print (r.headers)
# check the status and react accordingly
if http_status == 200 and r.headers['content-length'] == "0":
print ('Link Alive - NO content'+';'+str(http_status)+';'+link, file = log)
elif http_status == 200 and "text/html" in r.headers['content-type']:
print ('External- direct HTML link'+';'+str(http_status)+';'+link, file = log)
elif http_status == 200 and "application" in r.headers['content-type']:
print ('External- direct HTML link'+';'+str(http_status)+';'+link, file = log)
Когда я выполняю код я получаю следующее сообщение об ошибке:
return self._store[key.lower()][1]
KeyError: 'content-length'
выходной заголовок выглядит следующим образом:
CaseInsensitiveDict({'status': '200', path=/; HttpOnly, shpuvid=rBBcnFJUTliSHV+hA5lLAg==; expires=Thu, 08-Oct-15 18:26:32 GMT;'connection': 'keep-alive', 'cache-control': 'max-age=0, private, must-revalidate', 'date': 'Tue, 08 Oct 2013 18:26:32 GMT', 'content-type': 'text/html; charset=utf-8', 'x-rack-cache': 'miss'})
Я знаю, что ошибка существует, потому что header output
не имеет ключа «длина содержимого», но когда if condition
не удовлетворяет, он должен перейти к следующему elif
условию, которого не происходит, скорее останавливает выполнение кода, бросая вышеуказанную ошибку.
Любые предложения? Может быть, глупый вопрос, но хорошая вещь для новичка, чтобы учиться.
Это идеальное .. .Оно работает!! Большое спасибо!! –