Как проверить http-ответ с помощью python и добавить в список?

#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 не выполняется, попробуйте распечатать код ответа. Если вы хотите получить ошибки отслеживания, если таковые имеются, выполните файл без попыток и исключений. Это даст вам представление, если с вашим кодом что-то не так