Как хранить несколько значений в ключах в словаре в Python? - PullRequest
0 голосов
/ 15 мая 2018

Возможно, заголовок моего вопроса отличается от содержания вопроса.

statuscode = []
statuscode.append(200) 

for x in find_from_sublister(hostname):
    x2 = x.strip()
    url = "http://"+ x2
    try:
        req = requests.get(url)
        req1 = str(req.status_code) + " " + str(url) + '\n'
        req2 = str(req.status_code)
        req3 = str(url)
        dict = {req2 : req3}

        print " \n " + str(req1)

    except requests.exceptions.RequestException as e:
        print "Can't make the request to this Subdomain " + str(url) + '\n'

for keys, values in dict.iteritems():
    print "finding the url's whose status code is 200"

    if keys == statuscode[0]:
        print values
    else:
        print "po"

Я использую код для выполнения следующих действий.

  1. Он найдет субдомены изПодсписок (локально)
  2. Затем он будет искать код состояния каждого поддомена, который был найден подсписком, с помощью для цикла .for x in find_from_sublister(hostname):

Примечание: find_from_sublister (имя хоста) - это функция для поиска субдомена из сублистера.

Затем напечатайте код состояния с URL.Здесь print " \n " + str(req1)

[Все идет хорошо, но проблема начинается здесь]

Теперь мне нужно отделить URL-адреса, имеющие 200 кодов состояния.

, поэтому я слышал, что это может произойти с помощью словаря в Python.Итак, я пытаюсь использовать словарь.Как вы можете видеть dict = {req2 : req3}

Теперь я также создаю список индексов со значением 200

Затем я сравниваю ключи со списком индексов.здесь keys == statuscode[0]

, и если они совпадают, то он должен напечатать все URL, которые имеют код состояния 200.

Но результат, который я получаю, ниже,

finding the url's whose status code is 200 
po 

Вы видите значение po его другое значение оценки,

else:
   print "po"

Теперь проблема в том, почему я получаю это другое значение, а не URL-адреса с кодом состояния 200?

Надеюсь, я объяснил вам ясноИ жду кого-то, кто поговорит со мной об этом.

Спасибо

Примечание: я использую Python 2.7 ver.

1 Ответ

0 голосов
/ 15 мая 2018

В вашем случае вам даже не нужен словарь.

Я пытался максимально очистить код, включая более описательные имена переменных (также плохая идея переопределять встроенные имена, такие как dict).

urls_returning_200 = []

for url in find_from_sublister(hostname):
    url = "http://" + url.strip()
    try:
        response = requests.get(url)
        if response.status_code == 200:
            urls_returning_200.append(url)
        print " \n {} {}\n".format(response.status_code, url)
    except requests.exceptions.RequestException as e:
        print "Can't make the request to this Subdomain {}\n".format(url)

print "finding the url's whose status code is 200"
print urls_returning_200
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...