#python #http
Вопрос:
Я работаю над заданием для работы, где мой босс хочет, чтобы я написал программу для проверки наличия доменов компании с определенной системой управления персоналом. Эта система управления персоналом имеет свое название непосредственно в URL-адресе веб-сайта компании. Например, ropeswings.bamboohr.com. Я пишу программу, которая проверяет эти URL-адреса, и если HTTP-ответ равен 200, моя программа добавляет их в список. Как только программа заработает, я выведу этот список в txt-файл.
Моя проблема заключается в запросе python и правильном протоколировании HTTP — ответа. Когда я запускаю этот код с названием компании, в которой, как я точно знаю, есть эта кадровая компания, список по-прежнему выводится пустым. И я не могу понять, где я ошибся. Есть какие-нибудь идеи?
import sys, re, csv
domains = []
bamboos = []
with open('clist.csv') as file:
reader = csv.reader(file, delimiter=',')
for row in reader:
main = row[14][:-4]
if main in domains:
continue
else:
domains.append(main)
domains.pop(0)
for domain in domains:
try:
request = requests.get('https://' domain '.bamboohr.com/login.php')
if request.status_code == 200:
bamboos.append(domain)
except:
continue
print(bamboos)
Ответ №1:
Это может показаться немного неловким, но я думаю, что вы не импортируете пакет запросов в модуль. Помните, что запросы не являются встроенным классом/объектом. Пожалуйста, импортируйте его и повторите попытку.
Комментарии:
1. Вау…. Я чувствую себя удивленным мемом Пикачу. Я так и не уловил этого, потому что это никогда не давало мне обратного следа. Давайте посмотрим, как это работает
2. Просто попробовал, и программа ничего не печатает :/
3. ОК. Пожалуйста, попробуйте добавить
Exception
после ключевого слова «кроме». Это позволит вам получить доступ к исключению в области исключений, чтобы вы могли распечатать его на консоли и получить дополнительную информацию об ошибке. Блок должен быть чем-то вродеexcept Exception: print(Exception) continue
Ответ №2:
Я думаю, проблема в том, что вы не импортировали запросы. Добавьте import requests
в свой файл python.
Как только начнется выполнение кода try
, ошибка в блоке try приведет к тому, что выполнение перейдет в except
блок. Поскольку вы используете continue
оператор в except, он не вызовет никаких ошибок и снова вернется к циклу for, что приведет к пустому списку. Возможно, ваша программа потерпит неудачу requests.get()
. Вы также можете проверить это, добавив печать в начале «Кроме».
Если except
не выполняется, попробуйте распечатать код ответа. Если вы хотите получить ошибки отслеживания, если таковые имеются, выполните файл без попыток и исключений. Это даст вам представление, если с вашим кодом что-то не так